我只是觉得这有点奇怪。环境是Python v3
,对于我来说,表达式看起来不错
import numpy as np
np.nan==np.nan
在元组中使用时返回False
:
(np.nan,)==(np.nan,)
它返回True
答案 0 :(得分:1)
如numpy文档中所述:
np.nan == np.nan#始终为False!请改用特殊的numpy函数。
我假设在比较元组时,将依次检查值,但是在幕后进行的检查与显式比较不同,尤其是对于==
检查。
例如,通过比较id(elem)值进行检查,对于两个不同的numpy.nan,id(elem)值必须相同,因此返回true。同样,很可能在非cpython实现上,由于内部优化用于存储变量值,结果可能是错误的。
此外,您可以签出numpy.nan
的魔术实现,它可以使您更加了解比较动作在幕后发生的事情。