Numpy反面具

时间:2013-05-23 22:04:27

标签: python arrays numpy mask

我想在我的numpy蒙面数组中反转true / false值。

所以在下面的例子中我不想掩盖数据数组中的第二个值,我想掩盖第一个和第三个值。

以下只是一个例子。我的蒙面数组是由比之前运行的更长的进程创建的。所以我不能改变掩码数组本身。还有另一种方法来反转这些值吗?

import numpy
data = numpy.array([[ 1, 2, 5 ]])
mask = numpy.array([[0,1,0]])

numpy.ma.masked_array(data, mask)

2 个答案:

答案 0 :(得分:18)

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)

答案 1 :(得分:0)

最新的Python版本还支持将'〜'字符用作'logical_not'。例如

import numpy
data = numpy.array([[ 1, 2, 5 ]])
mask = numpy.array([[False,True,False]])

result = data[~mask]