【发布时间】:2017-04-16 02:47:52
【问题描述】:
我在一个多维数组masks 中有一堆 32 x 32 灰度图像,如下所示:
(2560, 1, 32, 32)
如果我对它们的值求和,其中一些图像包含非零值。
我想从多维数组中删除值之和为零的元素。
这就是我的处理方式:
for idx in range(masks.shape[0]):
if np.sum(masks[idx]) == 0:
masks = np.delete(masks, idx)
在找到零和元素的第一次迭代之后,masks 的形状发生了变化
(2560, 1, 32, 32)
到
(2621439,)
为什么会发生这种情况,我该如何解决?我想要的是只减少第一维,例如
(2120, 1, 32, 32)
【问题讨论】:
-
查看
np.delete文档。如果不指定axis,delete将在展平数组上运行。试试masks = np.delete(masks, idx, axis=0)。 -
删除所有零元素后你打算看到什么?
-
@RobertValencia 类似
(2120, 1, 32, 32)
标签: python arrays python-3.x numpy multidimensional-array