首页 > 后端开发 > Python教程 > 如何在Python中高效创建滚动窗口迭代器?

如何在Python中高效创建滚动窗口迭代器?

Susan Sarandon
发布: 2024-12-26 11:49:09
原创
230 人浏览过

How to Efficiently Create a Rolling Window Iterator in Python?

滚动窗口迭代器:Python 实现

以滚动窗口(或滑动窗口)方式迭代数据在各种数据中证明非常有用分析和机器学习应用。这个问题展示了一种在 Python 中为给定序列或迭代器创建滚动窗口迭代器的技术。

提供的主要 Python 实现如下:

def rolling_window(seq, window_size):
    it = iter(seq)
    win = [it.next() for _ in range(window_size)]
    yield win
    for e in it:
        win = win[1:] + (e,)
        yield win
登录后复制

这种方法迭代序列,创建初始窗口,然后在后续迭代中更新窗口。然而,一些 Python 爱好者建议使用替代方法来提高优雅性和效率。

其中一个建议涉及利用 itertools 模块:

from itertools import islice

def window(seq, n=2):
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result
    for elem in it:
        result = result[1:] + (elem,)
        yield result
登录后复制

该方法利用强大的 itertools 模块来实现滚动窗口功能简洁。

另一种选择,特别适合列表或元组,采用简单的方法:

seq = [0, 1, 2, 3, 4, 5]
window_size = 3

for i in range(len(seq) - window_size + 1):
    print(seq[i: i + window_size])
登录后复制

根据具体要求和性能考虑,这些替代实现可以为各种应用程序实现滚动窗口迭代器提供灵活性。

以上是如何在Python中高效创建滚动窗口迭代器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板