【发布时间】:2021-09-23 03:28:48
【问题描述】:
在 Python 中,如果我定义一个二维数组,并将第二行设置为 np.nan,则第二行将变为全 -9223372036854775808 而不是缺失值。一个例子在这里:
b = np.array(
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 5],
[0, 3, 4, 4, 6, 6, 6, 5, 4, 5],
[0, 0, 0, 3, 6, 6, 6, 6, 6, 6],
[0, 0, 3, 4, 6, 6, 6, 6, 6, 6],
[0, 1, 2, 4, 4, 4, 4, 4, 4, 4]])
b[1, :] = np.nan
print(b)
[[ 0 0 0
0 0 0
0 0 0
5]
[-9223372036854775808 -9223372036854775808 -9223372036854775808
-9223372036854775808 -9223372036854775808 -9223372036854775808
-9223372036854775808 -9223372036854775808 -9223372036854775808
-9223372036854775808]
[ 0 0 0
3 6 6
6 6 6
6]
[ 0 0 3
4 6 6
6 6 6
6]
[ 0 1 2
4 4 4
4 4 4
4]]
有人知道吗?我应该如何正确地将一行分配给 np.nan?
供您参考,我在 Ubuntu 16.04.7 LTS(GNU/Linux 4.15.0-132-generic x86_64)上由 mamba 创建的 python 3.7.10 环境中运行这些代码。
【问题讨论】:
-
在我的 Mac Python 3.9.4 (NumPy 1.21.0) 环境中运行您的代码,我得到“ValueError: cannot convert float NaN to integer” for
b[1, :] = np.nan... -
相关的是,
-9223372036854775808是 64 位有符号整数可以容纳的最小值。
标签: python python-3.x numpy nan