numpy.cumulative_sum#

numpy.cumulative_sum(x, /, *, axis=None, dtype=None, out=None, include_initial=False)[source]#

返回沿著指定軸的元素累計總和。

此函數是與 Array API 相容,可替代 numpy.cumsum 的方案。

參數:
xarray_like (類陣列)

輸入陣列。

axisint, optional (選填)

計算累計總和的軸。預設值 (None) 僅允許用於一維陣列。對於多維陣列,axis 為必填。

dtypedtype, optional (選填)

返回陣列的型別以及元素相加的累加器的型別。如果未指定 dtype,則預設為 x 的 dtype,除非 x 具有整數 dtype,且其精度低於預設平台整數。在這種情況下,將使用預設平台整數。

outndarray, optional (選填)

用於放置結果的替代輸出陣列。它必須具有與預期輸出相同的形狀和緩衝區長度,但必要時會轉換型別。請參閱 輸出型別判斷 以取得更多詳細資訊。

include_initialbool, optional (選填)

布林值,指示是否將初始值 (零) 作為輸出中的第一個值包含在內。當 include_initial=True 時,輸出的形狀與輸入的形狀不同。預設值:False

回傳:
cumulative_sum_along_axisndarray

除非指定了 out,否則會返回一個包含結果的新陣列,在這種情況下,將返回對 out 的參考。如果 include_initial=False,則結果的形狀與 x 相同。

另請參閱

sum

陣列元素求和。

trapezoid

使用複合梯形法則積分陣列值。

diff

計算沿著指定軸的第 n 個離散差值。

注意事項

當使用整數型別時,算術是模組化的,且溢位時不會引發錯誤。

對於浮點數值,cumulative_sum(a)[-1] 可能不等於 sum(a),因為 sum 可能使用成對求和常式,從而減少捨入誤差。 有關更多資訊,請參閱 sum

範例

>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> a
array([1, 2, 3, 4, 5, 6])
>>> np.cumulative_sum(a)
array([ 1,  3,  6, 10, 15, 21])
>>> np.cumulative_sum(a, dtype=float)  # specifies type of output value(s)
array([  1.,   3.,   6.,  10.,  15.,  21.])
>>> b = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.cumulative_sum(b,axis=0)  # sum over rows for each of the 3 columns
array([[1, 2, 3],
       [5, 7, 9]])
>>> np.cumulative_sum(b,axis=1)  # sum over columns for each of the 2 rows
array([[ 1,  3,  6],
       [ 4,  9, 15]])

cumulative_sum(c)[-1] 可能不等於 sum(c)

>>> c = np.array([1, 2e-9, 3e-9] * 1000000)
>>> np.cumulative_sum(c)[-1]
1000000.0050045159
>>> c.sum()
1000000.0050000029