2024-09-29 21:58:07 发布
网友
当将NumPy非数字值转换为布尔值时,它变为真,例如如下所示。
>>> import numpy as np >>> bool(np.nan) True
这与我直觉上的预期完全相反。这种行为是否有合理的原则?
(我怀疑在八度音阶中可能会出现同样的行为。)
0.0是唯一错误的浮点值,因为这是语言设计者认为最有用的。努比只是跟着。(当bool(float('nan'))是True时,bool(np.nan)是False会很奇怪)。
0.0
bool(float('nan'))
True
bool(np.nan)
False
我想这可能是因为这就是整数的工作原理。诚然,整数没有NaN或inf类型的值,但我认为特殊情况不足以打破规则。
这不是特定于NumPy的,但与Python对待NaNs的方式一致:
In [1]: bool(float('nan')) Out[1]: True
规则在documentation中阐明。
我认为可以合理地说,楠的真值应该是假的。然而,这不是语言现在的工作方式。
Pythontruth-value testing声明将下列值视为False:
zero of any numeric type, for example, 0, 0L, 0.0, 0j.
Numpy可能选择坚持这种行为,并防止NaN在布尔上下文中计算到False。但是请注意,您可以使用^{}来测试NaN。
0.0
是唯一错误的浮点值,因为这是语言设计者认为最有用的。努比只是跟着。(当bool(float('nan'))
是True
时,bool(np.nan)
是False
会很奇怪)。我想这可能是因为这就是整数的工作原理。诚然,整数没有NaN或inf类型的值,但我认为特殊情况不足以打破规则。
这不是特定于NumPy的,但与Python对待NaNs的方式一致:
规则在documentation中阐明。
我认为可以合理地说,楠的真值应该是假的。然而,这不是语言现在的工作方式。
Pythontruth-value testing声明将下列值视为
False
:Numpy可能选择坚持这种行为,并防止NaN在布尔上下文中计算到} 来测试NaN。
False
。但是请注意,您可以使用^{相关问题 更多 >
编程相关推荐