给定元组v = (1,2,3,4,)
如何将其转换为滚动平均值元组,考虑循环端点计算,即输出
((4+1+2)/3, (1+2+3)/3, (2+3+4)/3, (3+4+1)/3,)
当然,矢量和窗口大小可以改变。在上面的示例中,带宽为1(窗口大小为3)。
答案 0 :(得分:4)
将额外的元素粘贴到列表的末尾:
def movingAverages(seq, k):
circle = seq + seq[:k]
for j in range(len(seq)):
yield sum(circle[j:j+k])/k
例如:
list(movingAverages([1,2,3,4,5],2))
[1.5, 2.5, 3.5, 4.5, 3.0]