Foo*_*Bar 1 python boolean numpy python-3.5
据我所知,==检查价值是否相等,并is检查价值背后的结构的身份(例如===在其他一些语言中).
鉴于此,我不明白以下内容:
np.isnan(30) == False
Out[19]:
True
np.isnan(30) is False
Out[20]:
False
Run Code Online (Sandbox Code Playgroud)
其他身份检查似乎并非如此:
(5 == 4) == False
Out[22]:
True
(5 == 4) is False
Out[23]:
True
Run Code Online (Sandbox Code Playgroud)
看起来好像是作为值np.isnan()返回False,而不是作为标识返回.为什么会这样?
numpy.isnan()返回兼容的类型对象:
>>> import numpy
>>> type(numpy.isnan(0))
<class 'numpy.bool_'>
Run Code Online (Sandbox Code Playgroud)
这是一个可以在numpy数组中高效存储的自定义布尔值,请参阅Numpy的数据类型文档.该numpy.isnan()函数也可以在数组上运行,产生另一个带有结果的数组:
>>> numpy.isnan(numpy.array([1, 2]))
array([False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
又dtype是Numpy布尔对象.
Python不保证布尔操作必须始终返回单例布尔值.你永远不应该测试is True或is False 无论如何.numpy.isnan()在布尔运算中直接使用输出,用于not测试错误值:
if numpy.isnan(foo):
Run Code Online (Sandbox Code Playgroud)
和
if not numpy.isnan(bar):
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1388 次 |
| 最近记录: |