产生0-100之间1000个随机整数的列表,写一个函数,对列表中的元素以n(用户输入)为窗口宽度进行移动平均计算

移动平均的计算方法是:对列表中的元素以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]