滚动窗口迭代器: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中文网其他相关文章!