>백엔드 개발 >파이썬 튜토리얼 >Python에서 롤링 창 반복자를 효율적으로 만드는 방법은 무엇입니까?

Python에서 롤링 창 반복자를 효율적으로 만드는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-26 11:49:09226검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.