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

如何让数组按列求均值时,含NaN的列结果为NaN?

实现列含NaN则结果保留NaN的均值计算

你想要的效果是:当数组的某一列里存在NaN时,该列的计算结果就保留NaN,而不是忽略NaN去算其他值的均值对吧?其实只需要两步就能搞定:

  • 第一步:先检查每一列是否包含NaN
  • 第二步:对包含NaN的列返回NaN,不包含的列正常用np.nanmean计算均值

直接上代码示例:

import numpy as np

# 你的原始数组
a = np.array([[1, np.nan], [3, 4]])

# 第一步:判断每一列是否存在NaN
has_nan_in_col = np.isnan(a).any(axis=0)

# 第二步:根据判断结果生成最终数组
custom_result = np.where(has_nan_in_col, np.nan, np.nanmean(a, axis=0))

print(custom_result)
# 输出:array([ 2., nan])

简单解释下逻辑:

  • np.isnan(a).any(axis=0)会遍历每一列,只要该列有至少一个NaN,就返回True,否则返回False,最终得到一个和列数一致的布尔数组。
  • np.where会根据这个布尔数组做分支选择:如果是True(该列含NaN),就取np.nan;如果是False,就取np.nanmean计算出来的正常均值。

这样就刚好得到你想要的结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:35