繁体   English   中英

np.isnan()== False,但是np.isnan()不是False

[英]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 Trueis 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM