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

如何将numpy数组中的nan值填充为对应列的均值

按列均值填充numpy数组nan的高效实现方法

直接使用numpy向量化操作即可实现需求,完全不需要遍历列,性能远优于Python层面的循环实现,以下是两种常用方案:

方案1:纯numpy实现(无额外依赖)

用np.nanmean计算各列忽略nan的均值,配合np.where和广播机制直接填充,示例代码如下:

import numpy as np

# arr 为你从DataFrame转换得到的二维numpy数组
# 计算各列均值(自动跳过nan)
col_means = np.nanmean(arr, axis=0)
# 按列填充nan
arr = np.where(np.isnan(arr), col_means[np.newaxis, :], arr)

如果需要原地修改(类似inplace=True效果),可以改用掩码赋值的写法:

nan_mask = np.isnan(arr)
arr[nan_mask] = np.take(col_means, np.where(nan_mask)[1])

方案2:scikit-learn SimpleImputer实现(适合机器学习预处理场景)

如果你的场景是数据建模的预处理环节,用SimpleImputer更规范,还支持后续复用填充规则:

from sklearn.impute import SimpleImputer

# 初始化填充器,策略为按列均值填充
imputer = SimpleImputer(strategy='mean')
# 拟合数据同时完成填充
arr = imputer.fit_transform(arr)

两种方案均为底层C实现的向量化运算,相比Python层面遍历列的实现,数据量越大性能优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:42:03