如何每N行求numpy数组列的逐元素均值并为组内每行新增均值列
实现方案
步骤1:导入依赖库
import pandas as pd import numpy as np
步骤2:核心逻辑实现
核心思路是用行序号整除3生成分组规则,将每个分组内的数组堆叠后按维度求均值,再把均值广播到分组内的所有行,完整可运行代码如下:
# 构造示例数据,如果你已有对应DataFrame可直接跳过这部分 df = pd.DataFrame({ 'y': [ np.array([2,0,1]), np.array([0,0,4]), np.array([0,0,1]), np.array([2,0,2]), np.array([1,0,1]), np.array([0,0,2]), np.array([0,1,1]), np.array([0,0,0]), np.array([0,0,1]) ] }) # 直接新增分组均值列,无需生成中间分组字段 df['group_mean'] = df.groupby(df.index // 3)['y'].transform( lambda group: [np.mean(np.stack(group.to_list()), axis=0)] * len(group) ) # 如果你需要把均值数组转为普通列表存储,可以额外加一步转换 # df['group_mean'] = df['group_mean'].apply(lambda x: x.tolist())
注意:如果你的DataFrame索引不是从0开始的连续整数,把分组规则换成
pd.RangeIndex(len(df)) // 3即可,保证按行的先后顺序每3行一组。
结果验证
直接输出df即可得到和你预期完全一致的结构,每个分组的3行共用所属分组的均值数组。
内容的提问来源于stack exchange,提问作者connor449
相关产品推荐
相关产品推荐

