代码之家  ›  专栏  ›  技术社区  ›  user3601754

Python掩码多维

  •  0
  • user3601754  · 技术社区  · 12 年前

    我想屏蔽数组的一些值。阵列为3D,遮罩为2D。

    我想掩盖所有的坐标 frametemperature_reshape.shape[0] .

    我尝试了以下循环:

    for i in range(frametemperature_reshape.shape[0]):
        frames_BPnegl = np.ma.array(frametemperature_reshape[i,:,:], mask=mask2)
    
    2 回复  |  直到 8 年前
        1
  •  7
  •   ali_m    12 年前

    你可以 broadcast 2D掩模相对于3D阵列,从而其尺寸沿第三维度扩展,而不在存储器中实际复制:

    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)
    
        2
  •  1
  •   rroowwllaanndd    12 年前

    实现这一点的一种方法是基于2D掩模在第三维度上的复制创建3D掩模,如下所示:

    mask3 = mask2 * np.ones(3)[:, None, None].
    masked_output = np.ma.array(frametemperature_reshape, mask=mask3)