zha*_*hen 2 python comparison numpy
只要"是"返回True,不应该"=="返回True?
In [101]: np.NAN is np.nan is np.NaN
Out[101]: True
In [102]: np.NAN == np.nan
Out[102]: False
In [103]: np.NaN == np.nan
Out[103]: False
In [104]: np.NaN == np.NAN
Out[104]: False
Run Code Online (Sandbox Code Playgroud)
float nan的3个表达式只是旧numpy版本的遗留物还是有其他用法?
不,不是NaN.您已找到其中一个例外情况.根据IEEE 754,NaN不等于任何东西,甚至不是自己:
与NaN 进行比较时,即使与自身进行比较,也会返回无序结果.
不只是numpy表现得像这样:
>>> nan = float('nan')
>>> nan is nan
True
>>> nan == nan
False
Run Code Online (Sandbox Code Playgroud)
任何根据IEEE标准实现浮点运算的编程语言也是如此.
多个拼写可以匹配名称的共同首都.它是Not a Number的缩写,不同的人将缩写大写不同.
is总是会出现True在同一个对象中,但==甚至不能保证返回一个布尔值.从__eq__文档:
按照惯例,
False并True返回一个成功的比较.但是,这些方法可以返回任何值,因此如果在布尔上下文中使用比较运算符(例如,在if语句的条件下),Python将调用bool()该值以确定结果是true还是false.
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |