相关疑难解决方法(0)

滚动或滑动窗口迭代器?

我需要一个可在序列/迭代器/生成器上迭代的滚动窗口(也称为滑动窗口).默认的Python迭代可以被认为是一种特殊情况,窗口长度为1.我目前正在使用以下代码.有没有人有更多的Pythonic,更简洁,或更有效的方法来做到这一点?

def rolling_window(seq, window_size):
    it = iter(seq)
    win = [it.next() for cnt in xrange(window_size)] # First window
    yield win
    for e in it: # Subsequent windows
        win[:-1] = win[1:]
        win[-1] = e
        yield win

if __name__=="__main__":
    for w in rolling_window(xrange(6), 3):
        print w

"""Example output:

   [0, 1, 2]
   [1, 2, 3]
   [2, 3, 4]
   [3, 4, 5]
"""
Run Code Online (Sandbox Code Playgroud)

python algorithm

142
推荐指数
10
解决办法
8万
查看次数

什么是滑动窗口算法?例子?

在解决几何问题时,我遇到了一种称为滑动窗口算法的方法.

无法真正找到任何研究材料/细节.

算法是什么?

algorithm sliding-window

48
推荐指数
4
解决办法
6万
查看次数

标签 统计

algorithm ×2

python ×1

sliding-window ×1