我試圖計算一個移動平均值,但是在每個平均值之間設置了一個步長。例如,如果我在計算平均值的4元件窗口的每2個元素:Python中重疊窗口的平均值
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
這應該產生的平均[1,2,3,4],[3,4,5,6] ,[5,6,7,8],[7,8,9,10]。
window_avg = [2.5, 4.5, 6.5, 8.5]
我的數據是這樣的,結束在處理之前將被截斷,所以相對於窗口大小的長度沒有問題。
我讀過一些關於如何在Python中移動平均數的問題,似乎有很多itertools的用法;然而,迭代器一次只能執行一個元素,而我無法弄清楚在每次平均值計算之間如何獲得步長。 (How to calculate moving average in Python 3?)
我還能夠在MATLAB通過創建重疊索引的矩陣,然後索引數據矢量並且執行逐列平均值(Create matrix by repeatedly overlapping a vector)之前執行此操作。然而,由於這個向量相當大(大約70 000個元素,450個樣本的窗口,平均每30個樣本),所以計算可能需要太多的內存。
任何幫助將不勝感激。我正在使用Python 2.7。
我會嘗試'n = 4;小號== 2; [數據[數據[s * i:s * i + n])/ n爲i,枚舉數據爲(data [:: s])]',但這可能不是您要查找的數據(此處不需要'datum' ,但'range(len(data))'看起來非常不和諧)。 – Evert