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