Python 中元组的循环移动平均线

Circular moving average on a tuple in Python

给定一个元组 v = (1,2,3,4,) 我如何将其转换为滚动平均值的元组,考虑循环端点计算,即输出是

((4+1+2)/3, (1+2+3)/3, (2+3+4)/3, (3+4+1)/3,)

当然,矢量和 window 大小可以改变。在上面的示例中,带宽为 1(window 大小 3)。

只需将额外的元素粘贴到列表的末尾即可:

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]