【发布时间】:2011-10-12 06:37:21
【问题描述】:
有没有办法在 Numpy 中有效地实现一维数组的滚动窗口?
例如,我有这个纯 Python 代码 sn-p 来计算一维列表的滚动标准差,其中 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 的标准差微不足道,但滚动窗口部分完全让我难过。
我发现this 博客文章关于 Numpy 中的滚动窗口,但它似乎不适用于一维数组。
【问题讨论】:
-
你也可以看看bottleneck project,它内置了移动平均线、标准等。
标签: python python-3.x numpy window