在看黄博整理的numpy入门100题练习的时候,第41题提到了
How to sum a small array faster than np.sum?
找了下相关资料,记录下:
文档非常明确:
add.cr()等同于sum()。
两者的性能似乎是完全不同的:对于相对较小的数组大小而言。add.reduce
大约快两倍。
$ python -mtimeit -s"import numpy as np; a = np.random.rand(100); summ=np.sum" "summ(a)" 100000 loops, best of 3: 2.11 usec per loop $ python -mtimeit -s"import numpy as np; a = np.random.rand(100); summ=np.add.reduce" "summ(a)" 1000000 loops, best of 3: 0.81 usec per loop $ python -mtimeit -s"import numpy as np; a = np.random.rand(1000); summ=np.sum" "summ(a)" 100000 loops, best of 3: 2.78 usec per loop $ python -mtimeit -s"import numpy as np; a = np.random.rand(1000); summ=np.add.reduce" "summ(a)" 1000000 loops, best of 3: 1.5 usec per loop
对于较大的数组大小,差别似乎消失了:
$ python -mtimeit -s"import numpy as np; a = np.random.rand(10000); summ=np.sum" "summ(a)" 100000 loops, best of 3: 10.7 usec per loop $ python -mtimeit -s"import numpy as np; a = np.random.rand(10000); summ=np.add.reduce" "summ(a)" 100000 loops, best of 3: 9.2 usec per loop