我有一个一个维数组NumPy的:我怎样才能得到所有元素的产品在一个维数组numpy的
a = numpy.array([2,3,3])
我想有所有元素,18在这种情况下的产物。我能找到这样做会
的唯一方法:它看起来很漂亮,但不是非常快
b = reduce(lambda x,y: x*y, a)
(我需要做这个有很多)。
是否有一个这样做的numpy方法?如果不是,这样做的最有效方法是什么?我的真实世界数组有39个浮动元素。
我有一个一个维数组NumPy的:我怎样才能得到所有元素的产品在一个维数组numpy的
a = numpy.array([2,3,3])
我想有所有元素,18在这种情况下的产物。我能找到这样做会
的唯一方法:它看起来很漂亮,但不是非常快
b = reduce(lambda x,y: x*y, a)
(我需要做这个有很多)。
是否有一个这样做的numpy方法?如果不是,这样做的最有效方法是什么?我的真实世界数组有39个浮动元素。
在NumPy的你可以尝试:
numpy.prod(a)
对于较大的阵列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])
您reduce(lambda x,y: x*y, a)
需要24.2μs,
numpy.prod(a)
需要3.9μs。
编辑:a.prod()
需要2.67μs。感谢J.F. Sebastian!
A,numpy.prod(),这就是我正在寻找。谢谢! – 2011-03-18 08:51:55
['a.prod()'比'np.prod(a)']稍快(https://gist.github.com/875795) – jfs 2011-03-18 09:05:44