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
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])
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
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!