如何应用 numpy 掩码?
How do I apply a numpy mask?
我有两个输入数组 a1
和 a2
:
import numpy as np
a1 = np.array([1,2,3])
a2 = np.array([4,5,6])
我正在尝试屏蔽 a1
并根据 a2
中的值获取此输出数组;即(不)等于 5:
array([999999, 2, 999999])
为什么这个方法不对?
np.ma.array(a1, mask=np.ma.masked_equal(a2, 5)).filled()
它(在)正确 returns:
array([999999, 999999, 999999])
你可以写
np.ma.array(a1, mask=a2!=5).filled()
得到想要的结果[999999 2 999999]
。
或者你真的需要使用np.ma.masked_equal
?如果是这样,您可能想查看相反的 np.ma.masked_not_equal
,因为这是您要屏蔽的内容。
另一种方法是使用 np.where
:
np.where(a2==5,a1,999999)
array([999999, 2, 999999])
我有两个输入数组 a1
和 a2
:
import numpy as np
a1 = np.array([1,2,3])
a2 = np.array([4,5,6])
我正在尝试屏蔽 a1
并根据 a2
中的值获取此输出数组;即(不)等于 5:
array([999999, 2, 999999])
为什么这个方法不对?
np.ma.array(a1, mask=np.ma.masked_equal(a2, 5)).filled()
它(在)正确 returns:
array([999999, 999999, 999999])
你可以写
np.ma.array(a1, mask=a2!=5).filled()
得到想要的结果[999999 2 999999]
。
或者你真的需要使用np.ma.masked_equal
?如果是这样,您可能想查看相反的 np.ma.masked_not_equal
,因为这是您要屏蔽的内容。
另一种方法是使用 np.where
:
np.where(a2==5,a1,999999)
array([999999, 2, 999999])