如何计算NumPy数组中每4个元素的平均值
NumPy数组连续分段平均值计算
给定NumPy数组:
import numpy as np sample_list = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
需求是将数组按每4个连续元素为一段,计算每段的平均值,期望输出:[2.5, 6.5, 10.5, 14.5]
最优解法:利用reshape+mean
这是最简洁高效的实现方式,借助NumPy的数组重塑和均值计算功能:
segment_size = 4 # 将数组重塑为每行含4个元素的二维数组,再按行计算均值 result = sample_list.reshape(-1, segment_size).mean(axis=1) print(result) # 输出:array([ 2.5, 6.5, 10.5, 14.5])
说明:
reshape(-1, segment_size)里的-1让NumPy自动计算行数,原数组长度16、分段大小4时,会生成4行4列的二维数组。mean(axis=1)指定按行计算平均值,最终得到一维结果数组。
兼容非整除长度的扩展方案
如果数组长度无法被分段大小整除(比如数组长度为17),需要保留剩余元素的平均值,可以结合np.array_split处理:
sample_list = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]) segments = np.array_split(sample_list, len(sample_list)//segment_size + 1) result = np.array([seg.mean() for seg in segments]) print(result) # 输出:array([ 2.5, 6.5, 10.5, 14.5, 17. ])
内容的提问来源于stack exchange,提问作者raja
相关产品推荐
相关产品推荐

