numpy: 在包含None的数组中使用-运算符

7 投票
1 回答
3460 浏览
提问于 2025-04-17 15:46

我有一串数字,把它们放进了一个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”来表示缺失的数据。

撰写回答