Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man rollierende Standardabweichungen in NumPy effizient berechnen?
Rollendes Fenster für 1D-Arrays in NumPy implementieren
Die Notwendigkeit, rollierende Fensteroperationen für 1D-Arrays effizient durchzuführen, entsteht häufig bei der Datenanalyse und -manipulation . NumPy, eine leistungsstarke Bibliothek für numerische Operationen, bietet eine vielseitige Lösung für diese Aufgabe.
Betrachten Sie beispielsweise die Aufgabe, die rollierenden Standardabweichungen für eine 1D-Werteliste zu berechnen. Eine einfache Python-Implementierung mit Schleifen, wie in der Frage angegeben, kann für große Datensätze rechenintensiv sein.
NumPy-basierte Lösung
Um diesen Prozess zu optimieren, bietet NumPy an ein prägnanter und effizienter Ansatz:
<code class="python">import numpy as np def rolling_std(array, window): return np.std(np.lib.stride_tricks.as_strided(array, shape=array.shape[0] - window + 1, strides=(array.strides[0], array.strides[0])), 1)</code>
Die Funktion „rolling_std“ benötigt zwei Argumente: das 1D-Array und die gewünschte Fenstergröße.
Die Funktion „as_strided“ von NumPy erstellt eine Ansicht des Arrays, als ob es wäre wurden in überlappende Fenster unterteilt, mit einem Schritt, der eine effiziente Berechnung ermöglicht.
Die Funktion np.std berechnet dann die Standardabweichung entlang der zweiten Dimension und führt so effektiv den Rollvorgang aus.
Verwendung
Um die rollierenden Standardabweichungen für die Eingabearray-Beobachtungen zu berechnen, rufen Sie einfach auf:
<code class="python">stdev = rolling_std(observations, window_size)</code>
Diese Lösung ist hochleistungsfähig, macht explizite Schleifen überflüssig und nutzt die volle Leistung NumPys Fähigkeiten zur effizienten Array-Manipulation.
Das obige ist der detaillierte Inhalt vonWie kann man rollierende Standardabweichungen in NumPy effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!