Python - 掩盖多维

时间:2014-07-17 09:18:00

标签: python numpy mask

我想屏蔽一些数组的值。数组是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)

2 个答案:

答案 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)