设置一些要处理的测试数据:
>>> a = np.arange(12*4).reshape((12,4))
首先,我们为掩码数组“分配”空间:
>>> mask = np.empty(a.shape,dtype=bool)
现在我们不能从第一列分配给它a == 6
直接因为它们的形状不正确:
>>> mask[:,:] = a[:,0] == 6
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (12,4) (12)
但我们可以播出我们的第一个专栏a
只需插入一个新轴即可达到正确的形状,使其成为一个二维数组:
>>> mask[:,:] = (a[:,0] == 6)[:,np.newaxis]
正如我们所看到的,我们的掩码现在是正确的。
>>> mask
array([[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[ True, True, True, True],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False]], dtype=bool)
现在我们只需制作蒙版数组并坐下来享受:)。
>>> ma.MaskedArray(a,mask=mask)
masked_array(data =
[[-- -- -- --]
[-- -- -- --]
[-- -- -- --]
[-- -- -- --]
[-- -- -- --]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]
[32 33 34 35]
[36 37 38 39]
[40 41 42 43]
[44 45 46 47]],
mask =
[[ True True True True]
[ True True True True]
[ True True True True]
[ True True True True]
[ True True True True]
[False False False False]
[False False False False]
[False False False False]
[False False False False]
[False False False False]
[False False False False]
[False False False False]],
fill_value = 999999)