Rollende Fenster-Iteratoren: Eine Python-Implementierung
Das Iterieren über Daten in einem rollenden Fenster (oder Schiebefenster) erweist sich bei verschiedenen Daten als äußerst nützlich Analyse- und maschinelle Lernanwendungen. Diese Frage stellt eine Technik zum Erstellen eines Rolling-Window-Iterators für eine bestimmte Sequenz oder einen Iterator in Python vor.
Die bereitgestellte primäre Python-Implementierung lautet wie folgt:
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
Dieser Ansatz iteriert durch die Sequenz , Erstellen des ersten Fensters und anschließendes Aktualisieren des Fensters in nachfolgenden Iterationen. Einige Python-Enthusiasten schlagen jedoch alternative Methoden für mehr Eleganz und Effizienz vor.
Ein solcher Vorschlag beinhaltet die Verwendung des itertools-Moduls:
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
Diese Methode nutzt das leistungsstarke itertools-Modul, um das rollierende Fenster zu implementieren Funktionalität prägnant.
Eine weitere Alternative, die sich besonders für Listen oder Tupel eignet, verwendet eine einfache Ansatz:
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])
Abhängig von den spezifischen Anforderungen und Leistungsüberlegungen können diese alternativen Implementierungen Flexibilität bei der Implementierung von Rolling-Window-Iteratoren für verschiedene Anwendungen bieten.
Das obige ist der detaillierte Inhalt vonWie erstellt man effizient einen Rolling-Window-Iterator in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!