使用logical_and组合numpy掩码

时间:2017-12-19 14:06:13

标签: python-2.7 numpy logical-operators masked-array

我已经看到了类似的问题,但我仍然在努力结合面具。

这是我的代码:

final_mask = ma.array(np.logical_and(a.mask, b.mask))

combined_mask=(ma.array(data, mask=final_mask))

data是我想要组合蒙版的数组。

当我绘制组合蒙版时,它似乎忽略了a.mask,因为它返回的值远远高于它应该的值。即超过200的任何东西以前都被掩盖了,但在这里它会返回300.

a.maskb.mask已经被定义和检查,所以我认为这是问题的结合。它们都返回整数而不是 true / false 值,这就是我所追求的。

谢谢

1 个答案:

答案 0 :(得分:0)

你关于a.mask整数等的讨论令人困惑。这是组合蒙版的直接示例

In [346]: data = np.arange(12)
In [347]: a = np.ma.masked_less(data, 7)
In [348]: b = np.ma.masked_greater(data,2)
In [349]: mask = np.logical_and(a.mask,b.mask)
In [350]: np.ma.array(data, mask=mask)
Out[350]: 
masked_array(data = [0 1 2 -- -- -- -- 7 8 9 10 11],
             mask = [False False False  True  True  True  True False False False False False],
       fill_value = 999999)

我最终屏蔽了所有值> 2和< 7。 a.mask是布尔值。

对于整数,0为假,其他为真

In [352]: np.logical_and([0,1,2,3],[3,2,1,0])
Out[352]: array([False,  True,  True, False], dtype=bool)