Python按元素乘法列表
最简洁的方法是什么来将一系列数字按元素相乘 例如Python按元素乘法列表,python,list,numpy,Python,List,Numpy,最简洁的方法是什么来将一系列数字按元素相乘 例如 使用np.prod: >>> a = np.array([[1,2,3],[2,3,4],[3,4,5]]) >>> np.prod(a,axis=1) array([ 6, 24, 60]) 使用列表理解和减少: >>> from operator import mul >>> lis = [[1,2,3],[2,3,4],[3,4,5]] >>> [r
使用
np.prod
:
>>> a = np.array([[1,2,3],[2,3,4],[3,4,5]])
>>> np.prod(a,axis=1)
array([ 6, 24, 60])
使用列表理解和
减少:
>>> from operator import mul
>>> lis = [[1,2,3],[2,3,4],[3,4,5]]
>>> [reduce(mul, x) for x in lis]
[6, 24, 60]
或者,如果您喜欢地图:
answer = map(functools.partial(functools.reduce, operator.mul), L) # listify as required
啊!你赢了我(+1)。好的,我将添加另一个,使用functools.partial
和map
我建议reduce(mul,x,1)
这样它可以安全地扩展到空列表(根据定义,空乘积等于1)。在您给定的示例中,3个不同子列表中相同索引的任意3个元素的乘积等于取相同索引的整个子列表的乘积。请指出。这假设所有子列表都有相同的大小。@François,如果他使用numpy开始,这是一个有效的假设。ImportError:没有名为“np”的模块,我只能猜测np是为numpy准备的?@ThorCaller是的,将numpy导入为np
是导入numpy的标准方式。
import operator
import functools
answer = [functools.reduce(operator.mul, subl) for subl in L]
answer = map(functools.partial(functools.reduce, operator.mul), L) # listify as required