Heim >Backend-Entwicklung >Python-Tutorial >Wie implementiert man gleitende Durchschnitte in Python ohne eine spezielle Funktion?

Wie implementiert man gleitende Durchschnitte in Python ohne eine spezielle Funktion?

Linda Hamilton
Linda HamiltonOriginal
2024-11-19 21:13:03694Durchsuche

How to Implement Moving Averages in Python without a Dedicated Function?

Gleitende Durchschnitte mit Python implementieren

Obwohl es in NumPy oder SciPy keine spezielle Funktion zur Berechnung gleitender Durchschnitte gibt, gibt es eine einfache und effiziente Möglichkeit, es mithilfe der Funktion np.cumsum zu implementieren. Dieser Ansatz ist besonders effektiv für nicht gewichtete gleitende Durchschnitte.

def moving_average(a, n=3):
    ret = np.cumsum(a, dtype=float)
    ret[n:] = ret[n:] - ret[:-n]
    return ret[n - 1:] / n

Dieser Code benötigt ein Array a und eine Fenstergröße n, um den gleitenden Durchschnitt zu berechnen. Es verwendet np.cumsum, um die kumulative Summe des Arrays zu berechnen und subtrahiert dann die Summe der vorherigen n Elemente, um das sich bewegende Fenster anzupassen. Das resultierende Array wird dann durch n dividiert, um den Durchschnitt zu erhalten.

Zum Beispiel berechnet der folgende Code den gleitenden Durchschnitt eines Arrays:

a = np.arange(20)
moving_average(a)
# array([  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,  11.,
#         12.,  13.,  14.,  15.,  16.,  17.,  18.])

Es ist erwähnenswert, dass gleitende Durchschnitte implementiert werden ist in NumPy relativ einfach und die Aufnahme einer solchen Funktionalität in die Bibliothek ist möglicherweise nicht notwendig, da dies zu einer Aufblähung führen und den Fokus der Bibliothek auf ihre Kernfunktionalität verringern könnte.

Das obige ist der detaillierte Inhalt vonWie implementiert man gleitende Durchschnitte in Python ohne eine spezielle Funktion?. 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