我该如何应用numpy面膜?

时间:2015-05-20 13:47:55

标签: python numpy mask

我有两个输入数组a1a2

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()

它(in)正确返回:

array([999999, 999999, 999999])

2 个答案:

答案 0 :(得分:2)

你可以写

np.ma.array(a1, mask=a2!=5).filled()

获得所需的结果[999999 2 999999]

或者您真的需要使用np.ma.masked_equal吗?如果是这样,你可能想要查看相反的np.ma.masked_not_equal,因为这是你要掩盖的内容。

答案 1 :(得分:2)

另一种方法是使用np.where

np.where(a2==5,a1,999999)
array([999999,      2, 999999])