Gleitender Durchschnitt für NumPy-Array in Python
-
Verwenden Sie die Methode
numpy.convolve
, um den gleitenden Durchschnitt für NumPy-Arrays zu berechnen -
Verwendung der Methode
scipy.convolve
zur Berechnung des gleitenden Mittelwerts für NumPy-Arrays -
Verwendung des Moduls
bottleneck
zur Berechnung des gleitenden Mittelwerts -
Verwendung von das Modul
pandas
zur Berechnung des gleitenden Mittelwerts
Der gleitende Durchschnitt wird häufig zur Untersuchung von Zeitreihendaten verwendet, indem der Mittelwert der Daten in bestimmten Intervallen berechnet wird. Es wird verwendet, um einige kurzfristige Schwankungen auszugleichen und Trends in den Daten zu untersuchen. Einfache gleitende Durchschnitte werden häufig verwendet, um Trends bei den Aktienkursen zu untersuchen.
Der gewichtete gleitende Durchschnitt legt mehr Wert auf die aktuellen Daten als auf die älteren Daten.
Die folgende Grafik gibt ein besseres Verständnis der gleitenden Durchschnitte.
In diesem Tutorial wird erläutert, wie Sie den gleitenden Durchschnitt für NumPy-Arrays in Python implementieren.
Verwenden Sie die Methode numpy.convolve
, um den gleitenden Durchschnitt für NumPy-Arrays zu berechnen
Die Funktion convolve()
wird bei der Signalverarbeitung verwendet und kann die lineare Faltung zweier Arrays zurückgeben. Was bei jedem Schritt getan wird, ist, das innere Produkt zwischen dem Array von Einsen und dem aktuellen Fenster zu nehmen und ihre Summe zu nehmen.
Der folgende Code implementiert dies in einer benutzerdefinierten Funktion.
import numpy as np
def moving_average(x, w):
return np.convolve(x, np.ones(w), "valid") / w
data = np.array([10, 5, 8, 9, 15, 22, 26, 11, 15, 16, 18, 7])
print(moving_average(data, 4))
Ausgabe:
[ 8. 9.25 13.5 18. 18.5 18.5 17. 15. 14. ]
Verwendung der Methode scipy.convolve
zur Berechnung des gleitenden Mittelwerts für NumPy-Arrays
Auf die gleiche Weise können wir auch die Funktion scipy.convolve()
verwenden. Es wird angenommen, dass es etwas schneller ist. Eine andere Möglichkeit, den gleitenden Durchschnitt mit dem NumPy-Modul zu berechnen, ist die Funktion cumsum()
. Es berechnet die kumulative Summe des Arrays. Dies ist eine sehr einfache, nicht gewichtete Methode zur Berechnung des gleitenden Durchschnitts.
Der folgende Code gibt mit dieser Funktion den gleitenden Durchschnitt zurück.
def moving_average(a, n):
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return ret[n - 1 :] / n
data = np.array([10, 5, 8, 9, 15, 22, 26, 11, 15, 16, 18, 7])
print(moving_average(data, 4))
Ausgabe:
[ 8. 9.25 13.5 18. 18.5 18.5 17. 15. 14. ]
Verwendung des Moduls bottleneck
zur Berechnung des gleitenden Mittelwerts
Das Modul bottleneck
ist eine Zusammenstellung von schnellen NumPy-Methoden. Dieses Modul verfügt über die Funktion move_mean()
, die den gleitenden Durchschnitt einiger Daten zurückgeben kann.
Beispielsweise,
import bottleneck as bn
import numpy as np
def rollavg_bottlneck(a, n):
return bn.move_mean(a, window=n, min_count=None)
data = np.array([10, 5, 8, 9, 15, 22, 26, 11, 15, 16, 18, 7])
print(rollavg_bottlneck(data, 4))
Ausgabe:
[ nan nan nan 8. 9.25 13.5 18. 18.5 18.5 17. 15. 14. ]
Da das Zeitfensterintervall 4 beträgt, gibt es zu Beginn drei Nanowerte, da der gleitende Durchschnitt für sie nicht berechnet werden konnte.
Verwendung von das Modul pandas
zur Berechnung des gleitenden Mittelwerts
Zeitreihendaten werden meist mit einem pandas
-DataFrame verknüpft. Daher ist die Bibliothek gut gerüstet, um verschiedene Berechnungen mit solchen Daten durchzuführen.
Wir können den gleitenden Durchschnitt von Zeitreihendaten mit den Funktionen rolling()
und mean()
berechnen, wie unten gezeigt.
import pandas as pd
import numpy as np
data = np.array([10, 5, 8, 9, 15, 22, 26, 11, 15, 16, 18, 7])
d = pd.Series(data)
print(d.rolling(4).mean())
Ausgabe:
0 NaN
1 NaN
2 NaN
3 8.00
4 9.25
5 13.50
6 18.00
7 18.50
8 18.50
9 17.00
10 15.00
11 14.00
dtype: float64
Wir konvertieren zuerst das NumPy-Array in ein Zeitreihenobjekt und verwenden dann die Funktion rolling()
, um die Berechnung im Rollfenster durchzuführen und den gleitenden Durchschnitt mit der Funktion mean()
zu berechnen.
Auch hier, da das Zeitfensterintervall 4 beträgt, gibt es zu Beginn drei Nanowerte, da der gleitende Durchschnitt für sie nicht berechnet werden konnte.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn