Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich die kumulative Summe einer numerischen Liste effizient berechnen?

Wie kann ich die kumulative Summe einer numerischen Liste effizient berechnen?

Mary-Kate Olsen
Freigeben: 2024-12-08 08:49:10
Original
985 Leute haben es durchsucht

How Can I Efficiently Calculate the Cumulative Sum of a Numerical List?

So berechnen Sie effizient die kumulative Summe von Zahlen in einer Liste

Bei der Verarbeitung numerischer Daten ist es häufig erforderlich, die kumulative Summe von zu berechnen Zahlen in einer Liste. Hier bieten wir eine umfassende Lösung und gehen auf ein Problem ein, das von einem Benutzer angesprochen wurde, der versucht hat, die Elemente einer Liste manuell zu summieren.

Zum Beispiel: Bei gegebenem Zeitintervall = [4, 6, 12] möchte der Benutzer dies tun Berechnen Sie [4, 4 6, 4 6 12], um die kumulative Summe t = [4, 10, 22] zu erhalten.

Manuell Ansatz:

Der Benutzer hat zunächst einen manuellen Ansatz versucht, indem er die Liste durchlaufen und die Summen akkumuliert hat:

t1 = time_interval[0]
t2 = time_interval[1] + t1
t3 = time_interval[2] + t2
print(t1, t2, t3)  # -> 4 10 22
Nach dem Login kopieren

Dieser Ansatz erfordert jedoch eine explizite Iteration und kann mühsam werden größere Listen.

Numpy-Implementierung:

Wenn Sie häufig auftreten Für numerische Operationen auf Arrays ist Numpy eine sehr empfehlenswerte Bibliothek, die eine integrierte Funktion zur kumulativen Summierung bereitstellt: cumsum. Mit Numpy kann die kumulative Summe effizient berechnet werden:

import numpy as np

a = [4, 6, 12]

np.cumsum(a)
#array([4, 10, 22])
Nach dem Login kopieren

Leistungsvergleich:

Numpy übertrifft bei solchen numerischen Operationen oft reine Python-Implementierungen. Ein Vergleich zwischen Numpys Cumsum und der manuellen Akkumulationsfunktion (accumu) des Benutzers zeigt den Unterschied:

In [136]: timeit list(accumu(range(1000)))
10000 loops, best of 3: 161 us per loop

In [137]: timeit list(accumu(xrange(1000)))
10000 loops, best of 3: 147 us per loop

In [138]: timeit np.cumsum(np.arange(1000))
100000 loops, best of 3: 10.1 us per loop
Nach dem Login kopieren

Während Numpy eine Abhängigkeit einführen kann, kann seine Effizienz seine Verwendung rechtfertigen, wenn Sie häufig ähnliche numerische Operationen ausführen.

Das obige ist der detaillierte Inhalt vonWie kann ich die kumulative Summe einer numerischen Liste effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage