numpy: 在包含None的数组中使用-运算符
我有一串数字,把它们放进了一个numpy数组里:
>>> import numpy as np
>>> v=np.array([10.0, 11.0])
然后我想从数组里的每个数值中减去一个数字。用numpy数组可以这样做:
>>> print v - 1.0
[ 9. 10.]
不过,我的数据里经常会有缺失值,用None
表示。对于这种数据,我会遇到这个错误:
>>> v=np.array([10.0, 11.0, None])
>>> print v - 1.0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'
我希望上面的例子能得到这样的结果:
[ 9. 10. None]
我该如何简单又高效地实现这个呢?
1 个回答
9
我建议你可以使用“掩码数组”:
v = np.ma.array([10., 11, 0],mask=[0, 0, 1])
print v - 10
>>> [0.0 1.0 --]
或者使用“NaNs”。
v = np.array([10.,11,np.nan])
print v - 10
>>> [ 0. 1. nan]
其实我更喜欢用“NaNs”来表示缺失的数据。