You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含NaN值时列表与NumPy数组比较返回False的原因是什么?

为什么包含NaN的数组与列表比较返回False?

这个现象的核心原因是NaN(Not a Number)的比较规则——根据IEEE 754浮点数标准,NaN和任何值(包括它自己)进行==比较时,结果都会是False。

你看你的代码里,aa[0]和bb[0]都是[np.nan, np.nan],但当你用==逐元素比较时,np.nan == np.nan的结果是False,自然np.all(aa[0] == bb[0])就返回False了;而aa[1]和bb[1]里的都是普通浮点数,==比较逻辑正常,所以返回True。

如果要正确比较包含NaN的数组,numpy提供了专门的解决方案:

  • 用np.array_equal并设置equal_nan=True参数,它会把NaN视为相等:
    np.array_equal(aa, bb, equal_nan=True)  # 返回True
    
  • 也可以结合np.isnan来判断NaN的位置是否一致,再结合普通值的比较:
    nan_mask = np.isnan(aa) == np.isnan(bb)
    value_mask = aa[~nan_mask] == bb[~nan_mask]
    np.all(nan_mask) and np.all(value_mask)  # 返回True
    

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:56:14