當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python numpy sum用法及代碼示例

本文簡要介紹 python 語言中 numpy.sum 的用法。

用法:

numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)

給定軸上的數組元素之和。

參數

a array_like

要總結的元素。

axis 無或int 或整數元組,可選

沿其執行求和的軸。默認值,axis=None,將對輸入數組的所有元素求和。如果軸為負數,則從最後一個軸計數到第一個軸。

如果axis是整數元組,則對元組中指定的所有軸執行求和,而不是像以前那樣對單個軸或所有軸執行求和。

dtype dtype,可選

返回數組的類型和元素相加的累加器的類型。默認情況下使用 a 的 dtype,除非 a 的整數 dtype 的精度低於默認平台整數。在這種情況下,如果 a 是有符號的,則使用平台整數,而如果 a 是無符號的,則使用與平台整數具有相同精度的無符號整數。

out ndarray,可選

用於放置結果的替代輸出數組。它必須具有與預期輸出相同的形狀,但如果需要,輸出值的類型將被強製轉換。

keepdims 布爾型,可選

如果將其設置為 True,則縮小的軸將作為尺寸為 1 的尺寸留在結果中。使用此選項,結果將針對輸入數組正確廣播。

如果傳遞了默認值,那麽保持昏暗不會被傳遞到sum子類的方法numpy.ndarray,但是任何非默認值都是。如果sub-class' 方法沒有實現保持昏暗將引發任何異常。

initial 標量,可選

總和的起始值。有關詳細信息,請參閱 reduce

where 類似於 bool 的數組,可選

要包含在總和中的元素。有關詳細信息,請參閱 reduce

返回

sum_along_axis ndarray

一個與 a 形狀相同的數組,移除了指定的軸。如果 a 是一個 0 維數組,或者如果 axis 為 None,則返回一個標量。如果指定了輸出數組,則返回對 out 的引用。

注意

使用整數類型時算術是模塊化的,溢出時不會引發錯誤。

空數組的和是中性元素 0:

>>> np.sum([])
0.0

對於浮點數,sum 的數值精度(和np.add.reduce) 通常通過直接將每個數字單獨添加到結果中來限製,從而導致每一步的舍入錯誤。但是,numpy 通常會使用數值更好的方法(部分成對求和),從而提高許多use-cases 的精度。這種改進的精度總是在沒有時提供axis給出。什麽時候axis給定,這將取決於求和的軸。從技術上講,為了提供盡可能最佳的速度,隻有當求和沿著內存中的快軸時才使用改進的精度。請注意,確切的精度可能會因其他參數而異。與 NumPy 相比,Pythonmath.fsum函數使用更慢但更精確的求和方法。特別是在對大量較低精度的浮點數求和時,例如float32, 數值誤差可能會變得很大。在這種情況下,建議使用dtype="float64"為輸出使用更高的精度。

例子

>>> np.sum([0.5, 1.5])
2.0
>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=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)
-128

您還可以使用非零值開始求和:

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

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.sum。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。