假设
a = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
mask = [1, 0, 1]
我想要
a[mask] == [
[1, 2, 3],
[False, False, False],
[7, 8, 9],
]
或等价物。
意思是,我想使用a
访问mask
,其中mask
的尺寸较小,并且具有自动广播功能。
我想在np.ma.array
参数的mask=
的构造函数中使用它。
答案 0 :(得分:2)
这应该有效。请注意,您的遮罩的含义与np.ma.masked_array
相反,其中1
表示已移除,因此我将您的遮罩反转了:
>>> a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> mask = ~np.array([1, 0, 1], dtype=np.bool) # Note - inverted mask.
>>> masked_a = np.ma.masked_array(
... a,
... np.repeat(mask, a.shape[1]).reshape(a.shape)
... )
>>> masked_a
masked_array(
data=[[1, 2, 3],
[--, --, --],
[7, 8, 9]],
mask=[[False, False, False],
[ True, True, True],
[False, False, False]],
fill_value=999999)