有没有办法在Numpy中高效地实现1D数组的滚动窗口?
例如,我有一个纯Python代码片段来计算1D列表的滚动标准偏差,其中observations
是1D值列表,n
是标准偏差的窗口长度:
stdev = []
for i, data in enumerate(observations[n-1:]):
strip = observations[i:i+n]
mean = sum(strip) / n
stdev.append(sqrt(250*sum([(s-mean)**2 for s in strip])/(n-1)))
有没有一种方法可以完全在Numpy中实现这一点,即不使用任何Python循环?numpy.std
的标准差很小,但滚动窗口部分完全难住了我.
我在Numpy上找到了this篇关于滚动窗口的博文,但它似乎不适用于1Darray.