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

如何在NumPy/Pandas中高效比较含NaN的数组并保留NaN位置?

如何在NumPy或Pandas中高效比较含NaN的数组并保留NaN位置

有没有基于NumPy或Pandas的高效方法,可以比较包含NaN的ndarray与其他数组,同时保留NaN的位置,而非将其替换为False?

实际行为

  • NumPy:np.array([np.nan]) > 5 → array([False])
  • Pandas:pd.Series([np.nan]) > 5 → 0 False

期望行为

  • NumPy:np.array([np.nan]) > 5 → array([nan])
  • Pandas:pd.Series([np.nan]) > 5 → 0 NaN

我知道可以在计算后根据输入中NaN的位置替换结果,但这种方法效率低得多。


已尝试方法

s = pd.Series([1, 2, 3, np.nan])
res = s > 1
res.loc[s.isna()] = np.nan

最优解决方案

基于Pandas的实现

s = pd.Series([1, 2, 3, np.nan])
res = (s > 1).astype('boolean')
res.loc[s.isna()] = np.nan
  • 感谢 @Michael Szczesny

仅基于NumPy的实现

s = np.array([1, 2, 3, np.nan])
res = np.where(np.isnan(s), np.nan, s > 1)
  • 感谢 @ConfusedReptile | ᓕಲᗣ(来自Python Discord社区)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:50:36