首頁 >後端開發 >Python教學 >如何有效率地計算數值列表的累加和?

如何有效率地計算數值列表的累加和?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-08 08:49:101044瀏覽

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

如何有效率地計算清單中數字的累積和

在處理數值資料時,經常需要計算清單中數字的累積和清單中的數字。在這裡,我們提供了一個全面的解決方案,並解決了使用者嘗試手動對清單元素求和時提出的問題。

例如,給定 time_interval = [4, 6, 12],使用者的目標是計算 [4, 4 6, 4 6 12] 得到累積和 t = [4, 10, 22].

手動方法:

使用者最初透過迭代列表並累加總和來嘗試手動方法:

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

然而,這種方法需要明確迭代,並且對於較大的情況可能會變得乏味

Numpy實作:

如果你經常對陣列進行數值運算,numpy 是一個強烈建議的函式庫,它提供了一個用於累積求和的內建函數:cumsum 。使用 numpy,可以有效率地計算累積和:

import numpy as np

a = [4, 6, 12]

np.cumsum(a)
#array([4, 10, 22])

效能比較:

對於此類數值運算,Numpy 通常優於純 Python 實作。 numpy 的cumsum 和使用者手動累積函數(accumu) 之間的比較顯示了差異:

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

雖然numpy 可能會引入依賴關係,但如果您經常執行類似的數值運算,它的效率可能會證明它的使用是合理的。

以上是如何有效率地計算數值列表的累加和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn