6

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

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

4

1 回答 1

9

我的建议是使用掩码数组:

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

或 NaN

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

我实际上更喜欢 NaN 作为缺失数据指标。

于 2013-02-13T16:53:14.020 回答