numpy:使用operator - 包含None的数组

pio*_*kuc 6 python numpy missing-data

我有一个数字列表,我把它放入一个numpy数组:

>>> import numpy as np
>>> v=np.array([10.0, 11.0])
Run Code Online (Sandbox Code Playgroud)

然后我想从数组中的每个值中减去一个数字.它可以像numpy数组一样完成:

>>> print v - 1.0
[  9.  10.]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的数据通常包含缺失值,表示为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'
Run Code Online (Sandbox Code Playgroud)

我想为上面的例子得到的是:

 [  9.  10.  None]
Run Code Online (Sandbox Code Playgroud)

我怎样才能以简单有效的方式实现它?

seg*_*sai 8

我的建议是使用蒙面数组:

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

或NaNs

v = np.array([10.,11,np.nan])
print v - 10
>>> [  0.   1.  nan]
Run Code Online (Sandbox Code Playgroud)

我实际上更喜欢NaNs作为缺失的数据指标.

  • 这些选项也比使用None要好得多,因为OP的数组实际上是`object`类型,因此非常低效,光栅比浮点数组. (3认同)