当在Python / Numpy中转换为布尔值时,为什么“ Not a Number”值不等于True?

发布于 2021-01-29 16:37:39

将NumPy非数字值转换为布尔值时,它变为True,例如,如下所示。

>>> import numpy as np
>>> bool(np.nan)
True

这与我的直觉期望完全相反。这种行为是否有合理的依据?

(我怀疑八度中可能会出现相同的行为。)

关注者
0
被浏览
152
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这绝不是NumPy特有的,但与Python处理NaN的方式一致:

    In [1]: bool(float('nan'))
    Out[1]: True
    

    这些规则在文档中有详细说明

    我认为可以合理地辩称,NaN的真值应为False。但是,这不是当前语言的工作方式。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看