Heim  >  Artikel  >  Backend-Entwicklung  >  Wie berechnet man Rollfenster-Standardabweichungen für 1D-Arrays mit Numpy?

Wie berechnet man Rollfenster-Standardabweichungen für 1D-Arrays mit Numpy?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 03:23:30278Durchsuche

How to Calculate Rolling Window Standard Deviations on 1D Arrays Using Numpy?

Numpy für Rollfenster-Standardabweichungen auf 1D-Arrays verwenden

In Numpy tritt häufig eine Operation auf, bei der eine Rollfensterfunktion berechnet werden muss über ein 1D-Array. Ein einfacher Ansatz wäre die Verwendung einer Schleife, wie im angegebenen Python-Codeausschnitt gezeigt. Eine effizientere Methode ist jedoch über die Funktion „Numpy“ verfügbar.

Der Schlüssel zur Durchführung einer Rolling-Window-Operation in Numpy liegt in der Verwendung der in einem Blogbeitrag vorgestellten Funktion „rolling_window“. Diese Funktion formt das Eingabearray in eine Reihe überlappender Fenster um und erstellt so effektiv ein 2D-Array. Das Anwenden einer Funktion auf dieses 2D-Array ermöglicht fensterbasierte Berechnungen.

Um rollierende Standardabweichungen zu berechnen, wenden Sie einfach die Funktion numpy.std auf die Ausgabe der Funktion Rolling_window an. Der folgende modifizierte Codeausschnitt demonstriert diesen Ansatz:

import numpy as np

# Define the rolling window function
def rolling_window(a, window):
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1],)
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)

# Input array
observations = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Calculate rolling standard deviations
stdev = np.std(rolling_window(observations, 3), 1)

# Print the results
print(stdev)

Dieser Codeausschnitt berechnet effizient die rollierenden Standardabweichungen für das gegebene 1D-Array mithilfe reiner Numpy-Operationen, wodurch Schleifen überflüssig werden.

Das obige ist der detaillierte Inhalt vonWie berechnet man Rollfenster-Standardabweichungen für 1D-Arrays mit Numpy?. 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