为什么表达式np.nan == np.nan的返回结果为False?
为什么
np.nan == np.nan 的执行结果为 False 核心原因要从np.nan的本质和设计规则说起:
np.nan是numpy对IEEE 754浮点数标准中NaN(Not a Number,非数值)的实现,它用来表示无意义、未定义的数值计算结果,比如0/0、对负数取平方根这类非法运算的返回结果都是NaN。- IEEE 754标准明确规定:任何涉及
NaN的比较运算,结果都为False,哪怕是两个NaN互相比较也不例外。这个设计逻辑非常好理解:
NaN本身代表的是“没有有效值”,你没法判定两个都没有意义的无效值是相等的,总不能说0/0的结果和负数开平方的结果是同一个值对吧? - 如果实际开发中需要判断某个值是不是
np.nan,不要用==比较,应该用numpy专门提供的np.isnan()方法,比如np.isnan(np.nan)的返回结果就是符合预期的True。
内容的提问来源于stack exchange,提问作者Rosalyn Cristina
相关产品推荐
相关产品推荐

