gpt4 book ai didi

python - 为什么 numpy.unique 不能识别多个 numpy.nan 值是相同的?

转载 作者:行者123 更新时间:2023-11-28 20:12:40 25 4
gpt4 key购买 nike

我有一个简短的示例脚本:

import numpy as np

print('numpy version: ', np.version.version)

foo = np.full(10, 5)
bar = np.full(10, np.nan)

print('foo: ', foo)
print('Unique values of foo:', np.unique(foo))

print('bar: ', bar)
print('Unique values of bar:', np.unique(bar))

打印结果如下:

numpy version:        1.16.4
foo: [5 5 5 5 5 5 5 5 5 5]
Unique values of foo: [5]
bar: [nan nan nan nan nan nan nan nan nan nan]
Unique values of bar: [nan nan nan nan nan nan nan nan nan nan]

我的问题:

  1. 为什么 np.unique() 在接收到 bar 作为输入时只返回一个 nan 值?这肯定是一个错误,对吧?或者,如果它是正确的、预期的行为,那么为什么它是正确的?
  2. 为获得 foo 所示的更典型行为,推荐的解决方法是什么(如果有的话)?

最佳答案

要回答你的问题,为什么: float 的 IEEE 规范 ( IEEE 754 ),这就是 numpy defines NaN 的表现。不等于任何东西,包括它自己。 Numpy 尊重这一点,这就是为什么 np.nan == np.nan 是错误的。

人们对此提示,但这是一个很难做出的选择,因为 NaN 可能来自不相等的事物。例如,这个表达式应该为真吗?

np.sqrt(-1) == np.sqrt(-2) 

两者的计算结果都是 NaN,但是说上面的应该是真的似乎是非常错误的。 需要决定如何在您的代码中处理 NaN — 如果您想以同样的方式处理它们,您当然可以。

关于python - 为什么 numpy.unique 不能识别多个 numpy.nan 值是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57068043/

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