好吧,极端的菜鸟问题在这里。在我的程序中,我生成了一个2D numpy数组,其中一些条目缺失(不是“nan”类型的nonxistant,而是“None”类,或NoneType)。我想在这些条目上加上一个掩码,但我似乎遇到了一些麻烦。通常,要掩盖所有值为2的条目,我会做
A = np.ma.masked_where(A [A == 2],A)
在这种情况下,无论我尝试第一个参数,这似乎都不起作用。想法?
答案 0 :(得分:5)
由于您的数组中有--
个条目,我猜这意味着它们已被屏蔽:
>>> m = ma.masked_where([True, False]*5, arange(10))
>>> print m
[-- 1 -- 3 -- 5 -- 7 -- 9]
所以,我会说你的条目已被屏蔽,你可以直接使用你的数组。
如果要创建仅包含非屏蔽值的数组,可以执行
>>> m[~m.mask]
[1 3 5 7]
其中m
是你的蒙面数组。
如果您想获得屏蔽值列表,只需选择其他值:
>>> m[m.mask]
[0 2 4 6 8]
请注意,缺失值不无,但通常是原始值。实际上,整数数组不能包含None。
如果你想要掩盖值的索引,你可以这样做:
>>> numpy.nonzero(m.mask)
numpy.nonzero()
的{{3}}描述了必须如何解释其结果。
答案 1 :(得分:5)
要在numpy数组中找到None的元素,可以使用numpy.equal。这是一个例子:
import numpy as np
import MA
x = np.array([1, 2, None])
print np.equal(x, None)
# array([False, False, True], dtype=bool)
# to get a masked array
print MA.array(x, mask=np.equal(x,None))
# [1 ,2 ,-- ,]