Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man rollierende Standardabweichungen in NumPy effizient berechnen?

Wie kann man rollierende Standardabweichungen in NumPy effizient berechnen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 16:17:02312Durchsuche

How to Efficiently Calculate Rolling Standard Deviations in NumPy?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn