如何使用较低的暗淡数组作为掩码创建一个 numpy 掩码数组?
How to create a numpy masked array using lower dim array as a mask?
假设
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],
]
或同等学历。
意思是,我想用mask
访问a
,其中mask
是低维的,并且有自动广播。
我想在 mask=
参数的 np.ma.array
的构造函数中使用它。
这应该有效。注意你的mask和np.ma.masked_array
意思相反,1
是removed的意思,所以我把你的mask倒过来了:
>>> 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)
假设
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],
]
或同等学历。
意思是,我想用mask
访问a
,其中mask
是低维的,并且有自动广播。
我想在 mask=
参数的 np.ma.array
的构造函数中使用它。
这应该有效。注意你的mask和np.ma.masked_array
意思相反,1
是removed的意思,所以我把你的mask倒过来了:
>>> 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)