如何有效率地計算清單中數字的累積和
在處理數值資料時,經常需要計算清單中數字的累積和清單中的數字。在這裡,我們提供了一個全面的解決方案,並解決了使用者嘗試手動對清單元素求和時提出的問題。
例如,給定 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中文網其他相關文章!