使用Python的原生sum
函數和NumPy的numpy.sum
之間的性能和行爲有什麼區別? sum
適用於NumPy的數組,numpy.sum
適用於Python列表,它們都返回相同的有效結果(未測試溢出等邊緣情況),但返回不同的類型。Python的總和與NumPy的numpy.sum
>>> import numpy as np
>>> np_a = np.array(range(5))
>>> np_a
array([0, 1, 2, 3, 4])
>>> type(np_a)
<class 'numpy.ndarray')
>>> py_a = list(range(5))
>>> py_a
[0, 1, 2, 3, 4]
>>> type(py_a)
<class 'list'>
# The numerical answer (10) is the same for the following sums:
>>> type(np.sum(np_a))
<class 'numpy.int32'>
>>> type(sum(np_a))
<class 'numpy.int32'>
>>> type(np.sum(py_a))
<class 'numpy.int32'>
>>> type(sum(py_a))
<class 'int'>
編輯:我想我實際的問題,這裏將使用numpy.sum
的Python整數列表上是比任何使用Python的sum
更快?
此外,使用Python整數與標量numpy.int32
的含義(包括性能)是什麼?例如,對於a += 1
,如果a
的類型是Python整數或numpy.int32
,那麼是否存在行爲或性能差異?我很好奇,如果使用NumPy標量數據類型(如numpy.int32
)來獲得在Python代碼中添加或減少很多值的速度更快。
爲了澄清,我正在進行生物信息學模擬,其中部分由摺疊多維numpy.ndarray
組成的單個標量和然後另外處理。我正在使用Python 3.2和NumPy 1.6。
在此先感謝!
+1,但是你難道沒有這些結果嗎? – dawg
@drewk,是的,我確實有過它們。謝謝你指出這一點!固定。 – Akavall
當你使用'np.array'時,'np.sum'會更快。但是如果你計算'np.sum(np.array對象)'和'sum(列表對象)',兩者的表現幾乎相同。 – xyres