如何用Numpy移除3D数组全零列且不降低维度
移除3D Numpy数组中的全零列
要精准移除3D数组中任意位置的全零列且保持数组维度结构,可通过定位非全零列的方式实现,具体步骤如下:
解决方案代码
import numpy as np vals = [1,0,3,4,0,6,7,8,9,10,11,12] array = np.reshape(vals, (2,2,3)) # 生成非全零列的掩码:检查每个列在所有层和行维度上是否不全为0 non_zero_cols = ~np.all(array == 0, axis=(0, 1)) # 保留非全零列,维持3D数组结构 filtered_array = array[:, :, non_zero_cols] print(filtered_array)
输出结果
[[[ 1 3] [ 4 6]] [[ 7 9] [10 12]]]
关键说明
np.all(array == 0, axis=(0, 1)):遍历数组的层(axis=0)和行(axis=1)维度,检查每个列(axis=2)是否全为0,返回布尔数组,True对应全零列。~对布尔数组取反得到非全零列的掩码,用该掩码索引原数组的列维度,即可保留目标列且不改变数组的3D结构。
内容的提问来源于stack exchange,提问作者cm_epr
相关产品推荐
相关产品推荐

