我不知道为什么,但当我使用逻辑&与numpy.nan值比较时,语句会被执行。在这个例子中,if 语句说如果 xx 和 yy 不是一个 nan 值,执行 if 语句。因为xx是一个nan值,所以if语句不应该被执行,但它仍然被执行了。xx = None
取而代之,然后它就完美地工作了(没有被执行),有什么想法吗?
xx = np.nan
yy = 20
if (xx != np.nan) & (yy != np.nan):
print('if statement executed')
Out:
if statement executed
因为 np.nan != np.nan
. 这种行为有一些很好的理由但这是我们不得不接受的不直观的事情之一。 使用 np.isnan
而不是检查NaN。
请注意 np.nan is np.nan
但要用 is
在一般情况下,不建议用于检查,因为实际上有 多重 NaN的浮动值,这些浮动值是不一样的常数(例如,其他一些算法可能返回的值是 isnan
但 is not np.nan
).
请注意
import numpy as np
print(np.nan != np.nan)
给。
True
你可以用 numpy.isnan
用于检查的函数。