gpt4 book ai didi

python - 通过索引将 numpy 数组中的值设置为 NaN

转载 作者:行者123 更新时间:2023-11-28 19:55:10 25 4
gpt4 key购买 nike

我想将 numpy 数组中的特定值设置为 NaN(将它们排除在逐行均值计算之外)。

我试过了

import numpy

x = numpy.array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0]])
cutoff = [5, 7]
for i in range(len(x)):
x[i][0:cutoff[i]:1] = numpy.nan

查看 x,我只看到 -9223372036854775808,我希望 NaN

我想到了一个替代方案:

for i in range(len(x)):
for k in range(cutoff[i]):
x[i][k] = numpy.nan

没有任何反应。我做错了什么?

最佳答案

nan 是一个浮点值。当 x 是整数数据类型的数组时,不能为其分配 nan 值。当 nan 被分配给一个整数数据类型的数组时,该值会自动转换为一个 int:

In [85]: np.array(np.nan).astype(int).item()
Out[85]: -9223372036854775808

因此,要修复您的代码,请将 x 设为 float 数据类型的数组:

x = numpy.array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0]], 
dtype=float)

import numpy

x = numpy.array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0]],
dtype=float)
cutoff = [5, 7]
for i in range(len(x)):
x[i][0:cutoff[i]:1] = numpy.nan
print(x)

产量

array([[ nan,  nan,  nan,  nan,  nan,   5.,   6.,   7.,   8.,   9.],
[ nan, nan, nan, nan, nan, nan, nan, 0., 1., 0.]])

关于python - 通过索引将 numpy 数组中的值设置为 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com