寻找一种从多个列表中求和的pythonic方法: 我有以下列表列表:
a = [0,5,2]
b = [2,1,1]
c = [1,1,1]
d = [5,3,4]
my_list = [a,b,c,d]
我正在寻找输出:
[8,10,8]
我用过:
print ([sum(x) for x in zip(*my_list )])
但是zip仅在my_list中有2个元素时才有效。 有想法吗?
答案 0 :(得分:3)
zip
适用于任意数量的可迭代项:
>>> list(map(sum, zip(*my_list)))
[8, 10, 8]
当然,大致等同于您的理解,
>>> [sum(x) for x in zip(*my_list)]
[8, 10, 8]
答案 1 :(得分:0)
Numpy有一个很好的方法,它也可以处理非常大的数组。首先,我们将my_list
创建为一个numpy数组,如下所示:
import numpy as np
a = [0,5,2]
b = [2,1,1]
c = [1,1,1]
d = [5,3,4]
my_list = np.array([a,b,c,d])
要获取各列的总和,可以执行以下操作
np.sum(my_list, axis=0)
或者,行的总和可以通过
检索np.sum(my_list, axis=1)
答案 2 :(得分:0)
我将其设置为numpy
数组,然后沿轴0求和:
my_list = numpy.array([a,b,c,d])
my_list.sum(axis=0)
输出:
[ 8 10 8]