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

时间:2017-04-17 21:04:06

标签: 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]

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

12 个答案:

答案 0 :(得分:17)

zipsum可以完成这项工作:

<强>代码:

[sum(x) for x in zip(*input_val)]

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)])

<强>结果:

[3, 6, 9, 12, 15]

答案 1 :(得分:5)

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

  

np.sum(input_val,轴= 0)

答案 2 :(得分:4)

您也可以在sum函数中使用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]

答案 3 :(得分:2)

这应该有效:

[sum(i) for i in zip(*input_val)]

答案 4 :(得分:2)

试试这个:

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

output_val = [sum([i[b] for i in input_val]) for b in range(len(input_val[0]))]

print output_val

答案 5 :(得分:2)

我认为这是做到这一点的最pythonic方式

CLIENT.list_review_policy_results_for_hit(HITId=hit['HITId'])

答案 6 :(得分:1)

使用列表推导的单行:对于每列(一行的长度),列出该列中的所有条目,并对该列表求和。

output_val = [sum([input_val[i][j] for i in range(len(input_val))]) \
                 for j in range(len(input_val[0]))]

答案 7 :(得分:1)

试试这段代码。这将使output_val以[{1}}:

结束[3, 6, 9, 12, 15]
input_val

答案 8 :(得分:1)

我想你可以使用:

import numpy as np
new_list = sum(map(np.array, input_val))

答案 9 :(得分:1)

请使用NumPy库构造数组:

import numpy as np

使用array()函数创建数组并将其保存在变量中:

 arr = np.array(([1, 2, 3, 4, 5],[1, 2, 3, 4, 5],[1, 2, 3, 4, 5]))

将sum()函数应用于通过将axis参数设置为零来为列指定数组的函数:

arr.sum(axis = 0)

答案 10 :(得分:0)

output_val=input_val.sum(axis=0)

这会使代码更简单我猜

答案 11 :(得分:0)

使用Numpy,您可以轻松地在一行中解决此问题:

1:输入

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

2:Numpy为您做数学

np.sum(input_val,axis=0)

3:然后是结果

array([ 3,  6,  9, 12, 15])