59

有没有办法将 NaN 存储在 Numpy 整数数组中?我得到:

a=np.array([1],dtype=long)
a[0]=np.nan

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
4

2 回答 2

53

不,你不能,至少对于当前版本的 NumPy。A是nan适用于浮点数组的特殊值。

有关于引入一个特殊位的讨论,该位将允许非浮点数组存储实际上对应于 a 的内容nan,但到目前为止(2012/10),这只是讨论。

同时,您可能需要考虑numpy.ma封装:您可以使用特殊numpy.ma.masked值来表示无效值,而不是选择像 -99999 这样的无效整数。

a = np.ma.array([1,2,3,4,5], dtype=int)
a[1] = np.ma.masked
masked_array(data = [1 -- 3 4 5],
             mask = [False  True False False False],
       fill_value = 999999)
于 2012-10-03T20:22:05.790 回答
11

nan 只是一个浮点数,整数中没有它的表示,所以没有:)

选择一个无效值,例如 -99999

于 2012-10-03T12:47:52.143 回答