如果
assert 1 == 1
很好,那么为什么:
assert np.nan == np.nan
导致断言错误?
更令人困惑的是,这没关系:
assert np.nan != np.nan
测试nan
的最佳方式是什么?
答案 0 :(得分:10)
NaN
具有与自身不相同的属性,您应使用np.isnan
来测试NaN
值,此处np.isnan(np.nan)
将产生True
:
In[5]:
np.nan == np.nan
Out[5]: False
In[6]:
np.nan != np.nan
Out[6]: True
In[7]:
np.isnan(np.nan)
Out[7]: True
正如@ŁukaszRogalski指出的那样,is
在这里也可行:
In [10]: np.nan is np.nan
Out[10]: True
答案 1 :(得分:1)
使用math.isnan(value)
。 NaN与自身不相等,因为它表示失败,并且可能没有以相同的方式生成。我不确定文档中缺少isnan
的原因,但它在CPython 3.4和2.7中都有。