Numpyマスクされた配列のtrue/false値を逆にしたい。
したがって、以下の例では、データ配列の2番目の値をマスクしたくないので、最初と3番目の値をマスクしたいと思います。
以下はほんの一例です。私のマスクされた配列は、以前に実行されたよりも長いプロセスによって作成されます。そのため、マスク配列自体を変更することはできません。値を逆にする別の方法はありますか?
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]