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


问题内容

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

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

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

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


问题答案:

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

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

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

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