我已经看到了类似的问题,但我仍然在努力结合面具。
这是我的代码:
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.mask
和b.mask
已经被定义和检查,所以我认为这是问题的结合。它们都返回整数而不是 true / false 值,这就是我所追求的。
谢谢
答案 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)