[英]np.isnan() == False, but np.isnan() is not False
据我了解, ==
为价值相等检查, is
检查的背后价值结构的同一性(如,说===
在一些其他语言)。
鉴于此,我不理解以下内容:
np.isnan(30) == False
Out[19]:
True
np.isnan(30) is False
Out[20]:
False
其他身份检查似乎并非如此:
(5 == 4) == False
Out[22]:
True
(5 == 4) is False
Out[23]:
True
似乎np.isnan()
返回False
作为值,而不是作为标识。 为什么会这样?
numpy.isnan()
返回兼容的类型对象:
>>> import numpy
>>> type(numpy.isnan(0))
<class 'numpy.bool_'>
这是一个自定义布尔值,可以有效地存储在numpy数组中,请参见Numpy的数据类型文档 。 numpy.isnan()
函数还可以对数组进行操作,从而生成另一个结果数组:
>>> numpy.isnan(numpy.array([1, 2]))
array([False, False], dtype=bool)
dtype
还是Numpy布尔对象。
Python无法保证布尔运算必须始终返回单例布尔值。 无论如何,您永远不应该测试is True
或is False
。 直接在布尔运算中使用numpy.isnan()
输出, not
用于测试错误值:
if numpy.isnan(foo):
和
if not numpy.isnan(bar):
np.isnan(30)
return
s np.False_
,其身份与False
不同; 但是不要依赖于此。
>>> import numpy as np
>>> np.isnan(30) is np.False_
True
>>> np.False_ is False
False
>>>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.