我想反转我的 numpy 掩码数组中的真/假值。
所以在下面的示例中,我不想屏蔽数据数组中的第二个值,我想屏蔽第一个和第三个值。
下面只是一个例子。我的屏蔽数组是由比以前运行的更长的进程创建的。所以我不能改变掩码数组本身。是否有另一种方法来反转值?
import numpy
data = numpy.array([[ 1, 2, 5 ]])
mask = numpy.array([[0,1,0]])
numpy.ma.masked_array(data, mask)
import numpy
data = numpy.array([[ 1, 2, 5 ]])
mask = numpy.array([[0,1,0]])
numpy.ma.masked_array(data, ~mask) #note this probably wont work right for non-boolean (T/F) values
#or
numpy.ma.masked_array(data, numpy.logical_not(mask))
例如
>>> a = numpy.array([False,True,False])
>>> ~a
array([ True, False, True], dtype=bool)
>>> numpy.logical_not(a)
array([ True, False, True], dtype=bool)
>>> a = numpy.array([0,1,0])
>>> ~a
array([-1, -2, -1])
>>> numpy.logical_not(a)
array([ True, False, True], dtype=bool)
最新的 Python 版本也支持 '~' 字符作为 'logical_not'。例如
import numpy
data = numpy.array([[ 1, 2, 5 ]])
mask = numpy.array([[False,True,False]])
result = data[~mask]