【发布时间】:2012-09-24 09:35:24
【问题描述】:
有没有办法将 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
【问题讨论】:
有没有办法将 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
【问题讨论】:
不,你不能,至少对于当前版本的 NumPy。 nan 是浮点数组的特殊值only。
关于引入一个特殊位的讨论,该位将允许非浮点数组存储实际上对应于 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)
【讨论】:
nan 和 null 不是一回事。此外,虽然它不是numpy 的直接替代品,但cuDF 确实支持空值。
nan 只是一个浮点数,整数中没有它的表示,所以没有:)
选择一个无效值,例如 -99999
【讨论】:
>= 0,那么使用负标记是可以接受的(除非您正在执行的操作结果可能与输入的符号不同,例如如-1 * -1)。如果您正在编写一个框架并最终使用哨兵,您可能应该允许用户在单个操作的基础上选择该值。同样,不理想。