我想屏蔽一些数组的值。数组是3D,掩码是2D。
我想在frametemperature_reshape.shape[0]
的方向上掩盖所有的coordonates。
我尝试了以下循环:
for i in range(frametemperature_reshape.shape[0]):
frames_BPnegl = np.ma.array(frametemperature_reshape[i,:,:], mask=mask2)
答案 0 :(得分:6)
你可以对3D数组broadcast 2D蒙版,使其大小沿第3维扩展而不会在内存中实际复制:
import numpy as np
x = np.random.randn(10, 20, 30)
mask = np.random.randn(10, 20) > 0
# broadcast `mask` along the 3rd dimension to make it the same shape as `x`
_, mask_b = np.broadcast_arrays(x, mask[..., None])
xm = np.ma.masked_array(x, mask_b)
答案 1 :(得分:1)
执行此操作的一种方法是基于第三维的2D复制创建3D蒙版,如下所示:
mask3 = mask2 * np.ones(3)[:, None, None].
masked_output = np.ma.array(frametemperature_reshape, mask=mask3)