Python numpy:使用运算符-数组中不包含运算符

Python numpy:使用运算符-数组中不包含运算符,python,numpy,missing-data,Python,Numpy,Missing Data,我有一个数字列表,我将其放入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,

我有一个数字列表,我将其放入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'

如何以简单高效的方式实现它?

我的建议是使用屏蔽阵列:

v = np.ma.array([10., 11, 0],mask=[0, 0, 1])
print v - 10
>>> [0.0 1.0 --]
还是南斯

v = np.array([10.,11,np.nan])
print v - 10
>>> [  0.   1.  nan]

事实上,我更喜欢将NAN作为缺失的数据指标

这些选项也比在OP的数组中不使用要好得多,因为OP的数组实际上是
object
类型,因此效率非常低,光栅数组比浮点数组低。非常感谢,使用
numpy.nan
听起来像是一种方法,比屏蔽数组更实用。什么时候屏蔽数组会比将缺失数据指示器表示为numpy.nan更好?我认为屏蔽数组可以更好地执行一些操作,如数组的求和和和平均值(然后正确处理缺失数据)。另外,我想您可以区分实际的NAN和丢失的数据。否则(我几乎总是这么说)在我看来南安号更好。
v = np.array([10.,11,np.nan])
print v - 10
>>> [  0.   1.  nan]