gpt4 book ai didi

python - np.sum 和 np.add.reduce 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 20:27:51 24 4
gpt4 key购买 nike

np.sumnp.add.reduce有什么区别?
the docs非常明确:

For example, add.reduce() is equivalent to 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

最佳答案

简短回答:当参数是一个 numpy 数组时,np.sum 最终会调用 add.reduce 来完成这项工作。处理其参数和调度到 add.reduce 的开销是 np.sum 较慢的原因。

更长的答案:np.sumnumpy/core/fromnumeric.py 中定义.在 np.sum 的定义中,您将看到工作被传递给 _methods._sum。那个函数,在 _methods.py , 很简单:

def _sum(a, axis=None, dtype=None, out=None, keepdims=False):
return um.add.reduce(a, axis=axis, dtype=dtype,
out=out, keepdims=keepdims)

um 是定义 add ufunc 的模块。

关于python - np.sum 和 np.add.reduce 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com