为什么 NaN 比较只在 np.frompyfunc 内部发出警告?

问题描述 投票:0回答:0

如果您将

np.nan
与其他值 进行比较,并且您在
np.frompyfunc
中进行比较,则会发出警告。为什么是这样?是错误还是功能?

import numpy as np
func = np.frompyfunc(lambda x: x<0,nin=1,nout=1)
print(func(1))            # False, no warning
print(np.nan<0)           # False
print(func(np.nan))       # False, and raises a warning
背景和动机

我在调试时遇到了这个问题 为什么 numpy.vectorize 在使用不确定性时会发出有关无效值的警告? 根本原因隐藏在

np.vectorize
和其他一些库代码之后。因此,理解浮动比较会改变
frompyfunc
中的语义有点困难。它对我来说是一个错误。

在我自己的代码中,我喜欢使用

np.seterr(all='raise')
with np.errstate(some_group='ignore'): ...
来确保正确处理所有关于浮动错误的警告,并且只有在我知道它是安全的情况下才会忽略警告。因此,我想知道为什么这个 compare-with-nan 只是偶尔警告。

python numpy nan numpy-ufunc
© www.soinside.com 2019 - 2024. All rights reserved.