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

如何在Python的NumPy数组中按5年间隔自动聚合计算均值

自动按年龄组计算性别均值的NumPy实现

针对你需要按5年间隔分组计算不同性别均值的需求,可以通过以下几种NumPy原生方法自动实现,无需手动提取每组数据:

方法一:数组重塑+维度求均值

这种方法适用于数据按年份顺序排列、每组样本数固定的场景(比如你的10行数据刚好分成2组,每组5行):

import numpy as np
arr = np.array([[0,1], [2,3], [3,4], [4,5], [5,6], [7,8], [8,9], [9,10], [10,11], [11,12]])

# 将原(10,2)数组重塑为(2,5,2),对应2个年龄组、每组5个样本、2个性别维度
grouped_arr = arr.reshape(2, 5, 2)
# 对每组内的样本维度(axis=1)求均值,得到每个年龄组的性别均值
result = grouped_arr.mean(axis=1)
print(result)

输出结果:

[[ 2.8  3.8]
 [ 9.  10. ]]

方法二:分组切片+列表推导式

如果需要更灵活的分组逻辑(比如每组样本数不固定),可以用np.split拆分数组后逐个计算均值:

import numpy as np
arr = np.array([[0,1], [2,3], [3,4], [4,5], [5,6], [7,8], [8,9], [9,10], [10,11], [11,12]])

# 按行将数组拆分为2个组,每组5行
groups = np.split(arr, 2)
# 对每个组按列求均值,再合并为结果数组
result = np.array([group.mean(axis=0) for group in groups])
print(result)

输出结果和方法一完全一致。

通用场景扩展(可选)

如果你的年龄数据不是按顺序连续排列,需要按实际年龄区间(比如0-4岁、5-9岁)分组,可以用np.digitize生成分组标签,再筛选计算均值:

import numpy as np
arr = np.array([[0,1], [2,3], [3,4], [4,5], [5,6], [7,8], [8,9], [9,10], [10,11], [11,12]])
ages = arr[:, 0]  # 提取年龄列
# 定义年龄区间的分界点,这里按5年分组
bins = [0, 5, 10, 15]
# 生成每个年龄对应的分组标签
labels = np.digitize(ages, bins)

# 计算每个分组内的性别均值
result = []
for label in np.unique(labels):
    # 筛选当前分组的所有行,按列求均值
    group_mean = arr[labels == label].mean(axis=0)
    result.append(group_mean)
result = np.array(result)
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:36:26