如何计算输入序列的累计均值(running mean)?返回等长均值序列
计算序列的累计均值(Running Mean)
你的原代码问题在于直接计算了整个序列的总均值,而没有逐步计算每一步的累计均值。要实现返回与输入等长的均值序列,可以通过累加求和+逐步计算的方式,用for循环和append方法完成:
实现代码
def running_mean(sequence): total = 0 result = [] count = 0 for num in sequence: count += 1 total += num # 计算当前累计的均值并加入结果列表 result.append(total / count) return result
代码说明
total用来累计遍历过程中的元素总和count记录当前已经处理过的元素数量(从1开始递增)- 每遍历一个元素,就更新总和与计数,计算当前的累计均值并添加到
result列表中 - 最终
result的长度和输入序列完全一致,每个位置对应到该位置为止的累计均值
测试示例
输入:[1, 2, 3]
输出:[1.0, 1.5, 2.0],和你要求的结果一致。
你也可以用enumerate简化计数逻辑,效果相同:
def running_mean(sequence): total = 0 result = [] # enumerate的start参数设为1,直接得到当前元素的位置序号 for idx, num in enumerate(sequence, start=1): total += num result.append(total / idx) return result
内容的提问来源于stack exchange,提问作者paapuru
相关产品推荐
相关产品推荐

