如果您将
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 只是偶尔警告。