numpy.ufunc.accumulate#

方法

ufunc.accumulate(array, axis=0, dtype=None, out=None)#

累積將運算子應用於所有元素的結果。

對於一維陣列,accumulate 產生的結果等同於

r = np.empty(len(A))
t = op.identity        # op = the ufunc being applied to A's  elements
for i in range(len(A)):
    t = op(t, A[i])
    r[i] = t
return r

例如,add.accumulate() 等同於 np.cumsum()。

對於多維陣列,accumulate 僅沿一個軸(預設為軸零;請參閱以下範例)應用,因此如果想要累積多個軸,則需要重複使用。

參數:
arrayarray_like

要操作的陣列。

axisint, optional

要沿其應用累積的軸;預設為零。

dtypedata-type code, optional

用於表示中間結果的資料類型。如果提供了輸出陣列,則預設為輸出陣列的資料類型;如果未提供輸出陣列,則預設為輸入陣列的資料類型。

outndarray, None, or tuple of ndarray and None, optional

結果儲存的位置。如果未提供或為 None,則會傳回新配置的陣列。為了與 ufunc.__call__ 一致,如果作為關鍵字給定,則可以將其包裝在 1 元素元組中。

返回:
rndarray

累積值。如果提供了 out,則 r 是對 out 的參考。

範例

一維陣列範例

>>> import numpy as np
>>> np.add.accumulate([2, 3, 5])
array([ 2,  5, 10])
>>> np.multiply.accumulate([2, 3, 5])
array([ 2,  6, 30])

二維陣列範例

>>> I = np.eye(2)
>>> I
array([[1.,  0.],
       [0.,  1.]])

沿軸 0(列)累積,向下遍歷列

>>> np.add.accumulate(I, 0)
array([[1.,  0.],
       [1.,  1.]])
>>> np.add.accumulate(I) # no axis specified = axis zero
array([[1.,  0.],
       [1.,  1.]])

沿軸 1(行)累積,遍歷行

>>> np.add.accumulate(I, 1)
array([[1.,  1.],
       [0.,  1.]])