逻辑和,与numpy nan与float的比较。

问题描述 投票:0回答:2

我不知道为什么,但当我使用逻辑&与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
python numpy nan
2个回答
2
投票

因为 np.nan != np.nan. 这种行为有一些很好的理由但这是我们不得不接受的不直观的事情之一。 使用 np.isnan 而不是检查NaN。

请注意 np.nan is np.nan但要用 is 在一般情况下,不建议用于检查,因为实际上有 多重 NaN的浮动值,这些浮动值是不一样的常数(例如,其他一些算法可能返回的值是 isnanis not np.nan).


1
投票

请注意

import numpy as np
print(np.nan != np.nan)

给。

True

你可以用 numpy.isnan 用于检查的函数。

© www.soinside.com 2019 - 2024. All rights reserved.