我有一个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
这使我可以将此数组与另一个相同大小的数组求和,而忽略掩码值。
答案 0 :(得分:4)
您可以使用广播一步创建整个蒙版:
i, j, k = np.ogrid[:5, :5, :5]
mask = (i>k) | (k>=j)