我有一个NumPy数组:
a = numpy.array([2,3,3])
Run Code Online (Sandbox Code Playgroud)
我希望拥有所有元素的产品,在这种情况下为18.
我能找到的唯一方法是:
b = reduce(lambda x,y: x*y, a)
Run Code Online (Sandbox Code Playgroud)
这看起来很漂亮,但速度不是很快(我需要做很多事).
是否有一个numpy方法来做到这一点?如果没有,最有效的方法是什么?我的真实世界阵列有39个浮点元素.
eum*_*iro 13
在NumPy中,您可以尝试:
numpy.prod(a)
Run Code Online (Sandbox Code Playgroud)
对于更大的阵列numpy.arange(1,40) / 10.:
array([ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1,
1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2,
2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3,
3.4, 3.5, 3.6, 3.7, 3.8, 3.9])
Run Code Online (Sandbox Code Playgroud)
你reduce(lambda x,y: x*y, a)需要24.2μs,
numpy.prod(a) 需要3.9μs.
编辑: a.prod()需要2.67μs.感谢JF Sebastian!
| 归档时间: |
|
| 查看次数: |
10115 次 |
| 最近记录: |