如何在Python中对数组的列进行求和

Ale*_*der 12 python arrays list-comprehension

如何在python数组中添加列的所有值?理想情况下,我想这样做而不导入任何额外的库.

input_val = [[1, 2, 3, 4, 5],
             [1, 2, 3, 4, 5],
             [1, 2, 3, 4, 5]]

output_val = [3, 6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)

我知道我可以在嵌套的for循环中完成,想知道是否有更好的方法(如列表理解)?

Ste*_*uch 21

zip并且sum可以做到这一点:

码:

[sum(x) for x in zip(*input_val)]
Run Code Online (Sandbox Code Playgroud)

zip获取输入列表的内容并对其进行转置,以便同时生成所包含列表的每个元素.这允许sum查看每个包含列表的第一个元素,然后下一次迭代将获得每个列表的第二个元素,等等...

测试代码:

input_val = [[1, 2, 3, 4, 5],
             [1, 2, 3, 4, 5],
             [1, 2, 3, 4, 5]]

print([sum(x) for x in zip(*input_val)])
Run Code Online (Sandbox Code Playgroud)

结果:

[3, 6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)


Jav*_*oor 7

如果你决定使用任何库,numpy很容易做到这一点:

np.sum(input_val,轴= 0)

  • 对于大小为 15561x22417 的数组,此方法是最快的方法。谢谢! (2认同)

Moi*_*dri 5

您也可以在函数内使用sumwith :zipmap

# In Python 3.x 
>>> list(map(sum, zip(*input_val)))
[3, 6, 9, 12, 15]
# explicitly type-cast it to list as map returns generator expression

# In Python 2.x, explicit type-casting to list is not needed as `map` returns list
>>> map(sum, zip(*input_val))
[3, 6, 9, 12, 15]
Run Code Online (Sandbox Code Playgroud)