有没有办法在 Numpy 中有效地实现一维数组的滚动窗口?
例如,我有这个纯 Python 代码片段来计算一维列表的滚动标准偏差,其中 observations
是一维值列表,而 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 中找到 了这篇 关于滚动窗口的博文,但它似乎不适用于一维数组。
原文由 c00kiemonster 发布,翻译遵循 CC BY-SA 4.0 许可协议
只需使用博客代码,但将您的函数应用于结果。
IE
你在哪里(来自博客):