如何快速遮罩数组中的不同切片?

时间:2019-03-21 12:08:12

标签: python numpy

我有一个3d数组,其中所有轴长都相同(例如(5,5,5))。我需要屏蔽所有数组,并按照下面的代码对数组中的某些切片进行屏蔽。我设法使用for循环完成此操作,但我想知道是否有更快的解决方案。

array = np.reshape(np.array(np.random.rand(125)), (5,5,5))
array = ma.array(array, mask=True)
for i in range(array.shape[0]):
    for j in range(array.shape[1]):
        array[i, j, :].mask[i:j] = False

这使我可以将此数组与另一个相同大小的数组求和,而忽略掩码值。

1 个答案:

答案 0 :(得分:4)

您可以使用广播一步创建整个蒙版:

i, j, k = np.ogrid[:5, :5, :5] 
mask = (i>k) | (k>=j)