not是通过
__nonzero__特殊方法实现的,该方法需要返回
True或
False,因此无法给出所需的结果。而是
~使用通过
__not__特殊方法实现的运算符。出于相同的原因,
&和
|用来代替
and和
or。
PEP
335旨在允许布尔运算符的重载,但由于开销过大而被拒绝(例如,使
if语句复杂化)。
PEP
225建议了“按元素”运算符的通用语法,这将提供更通用的解决方案,但已被推迟。看来,目前的局势虽然尴尬,但不足以迫使人们改变。
np.isfinite在标量上调用时返回的类型值
np.bool_不是
bool。
np.bool_也是从bool
dtype数组中提取标量值时得到的类型。如果你使用
np.True_和
np.False_到位的
True和
False你会得到下一致的行为
~。



