【发布时间】:2013-03-28 15:49:03
【问题描述】:
当将 NumPy Not-a-Number 值转换为布尔值时,它变为 True,例如如下。
>>> import numpy as np
>>> bool(np.nan)
True
这与我的直觉预期完全相反。这种行为背后是否有合理的原则?
(我怀疑在 Octave 中可能会出现相同的行为。)
【问题讨论】:
-
我的预感:NaN 不等于 0,所以转换为布尔值时是真的。如果 NaN 为假,则将浮点数转换为布尔值将进行两次检查,一次检查零,一次检查 NaN。 (但我怀疑将 Numpy 浮点数解释为布尔值并不是常见的做法......)
-
C(NumPy 所基于)中也是如此。来自标准:
When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1.脚注59明确指出NaNs do not compare equal to 0 and thus convert to 1.