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 的參考。
另請參閱
註解
使用整數型別時,算術是模組化的,並且在溢位時不會引發錯誤。
空陣列的總和是中性元素 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