移动平均的计算方法是:对列表中的元素以n为单位进行算术平均,
即原列表第1至第n个求平均值,为结果列表的第1个元素,
原列表第2第n+1个求平均值,为结果列表的第2个元素,以此类推。
原列表倒数第n个至最后一个求平均值,为结果列表的最后一个元素
如果熟习numpy,可以直接使用滑动均值函数numpy.convolve来解决问题。如果不熟悉,只用python列表也很容易,代码如下(只生成了10个随机数做测试):
>>> import random
>>> def convolve(rlist):
n = int(input('请输入一个整数作为窗口宽度:'))
return [sum(rlist[i:i+n])/n for i in range(len(rlist)-n+1)]
>>> rlist = [random.randint(0,100) for i in range(10)]
>>> print(convolve(rlist))
请输入一个整数作为窗口宽度:3
[42.0, 37.0, 53.333333333333336, 55.0, 63.0, 46.333333333333336, 44.666666666666664, 59.0]