我试图计算一个移动平均值,但是在每个平均值之间设置了一个步长。例如,如果我在计算平均值的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