numpy.sum#

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)[原始碼]#

沿著給定軸線計算陣列元素的總和。

參數:
aarray_like

要加總的元素。

axisNone 或 int 或 int 元組,選用

執行總和運算的軸線或軸線們。預設值 axis=None 會加總輸入陣列的所有元素。如果 axis 為負值,則從最後一個軸線算到第一個軸線。如果 axis 是 int 元組,則會在元組中指定的所有軸線上執行總和運算,而不是像之前那樣在單一軸線或所有軸線上執行。

dtypedtype,選用

傳回陣列的型別以及元素加總所在的累加器的型別。a 的 dtype 預設會被使用,除非 a 的整數 dtype 的精確度低於預設平台整數。在這種情況下,如果 a 是有號整數,則會使用平台整數,而如果 a 是無號整數,則會使用與平台整數相同精確度的無號整數。

outndarray,選用

要在其中放置結果的替代輸出陣列。它必須具有與預期輸出相同的形狀,但如果需要,將會轉換輸出值的型別。

keepdimsbool,選用

如果設定為 True,則縮減的軸線會保留在結果中,作為大小為一的維度。使用此選項,結果將會針對輸入陣列正確廣播。

如果傳遞預設值,則 keepdims 將不會傳遞到 sum 方法的 ndarray 子類別,但是任何非預設值都會傳遞。如果子類別的方法未實作 keepdims,則會引發任何例外。

initial純量,選用

總和的起始值。請參閱 reduce 以取得詳細資訊。

wherearray_like of bool,選用

要包含在總和中的元素。請參閱 reduce 以取得詳細資訊。

傳回值:
sum_along_axisndarray

a 具有相同形狀的陣列,但已移除指定的軸線。如果 a 是 0 維陣列,或者如果 axis 為 None,則會傳回純量。如果指定了輸出陣列,則會傳回對 out 的參考。

另請參閱

ndarray.sum

等效方法。

add

numpy.add.reduce 等效函數。

cumsum

陣列元素的累積總和。

trapezoid

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

meanaverage

註解

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

空陣列的總和是中性元素 0

>>> np.sum([])
0.0

對於浮點數,總和(和 np.add.reduce)的數值精度通常受到直接將每個數字個別加到結果中而限制,這會在每個步驟中導致捨入誤差。然而,通常 numpy 會使用數值上更好的方法(部分成對加總),從而在許多使用案例中提高精度。當未給定 axis 時,始終會提供這種提高的精度。當給定 axis 時,這將取決於對哪個軸線進行加總。從技術上講,為了提供最快的速度,只有當沿著記憶體中的快速軸線進行加總時,才會使用提高的精度。請注意,確切的精度可能會因其他參數而異。與 NumPy 相比,Python 的 math.fsum 函數使用較慢但更精確的加總方法。特別是當加總大量較低精度的浮點數(例如 float32)時,數值誤差可能會變得顯著。在這種情況下,建議使用 dtype="float64" 以使用更高的輸出精度。

範例

>>> import numpy as np
>>> np.sum([0.5, 1.5])
2.0
>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32)
np.int32(1)
>>> np.sum([[0, 1], [0, 5]])
6
>>> np.sum([[0, 1], [0, 5]], axis=0)
array([0, 6])
>>> np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])
>>> np.sum([[0, 1], [np.nan, 5]], where=[False, True], axis=1)
array([1., 5.])

如果累加器太小,則會發生溢位

>>> np.ones(128, dtype=np.int8).sum(dtype=np.int8)
np.int8(-128)

您也可以使用零以外的值開始總和

>>> np.sum([10], initial=5)
15