按元素位置求和多维数组

时间:2017-07-18 21:29:05

标签: python arrays list-comprehension

我有以下代码:

y = [sum(x) for x in ([0, 1, 2], [10, 11, 12], [20, 21, 22])]

print(y)

输出为:[3,33,63]

我所追求的是按每个列表中的位置求和,所以我想要的输出是:

[30, 33, 36]

0 + 10 + 20 = 30
1 + 11 + 21 = 33
2 + 12 + 22 = 36

我做错了什么?

2 个答案:

答案 0 :(得分:2)

首先列出

zip

y = [sum(x) for x in zip([0, 1, 2], [10, 11, 12], [20, 21, 22])]

print(y)
# [30, 33, 36]

答案 1 :(得分:-1)

如果你想通过索引获得单笔金额,你可以编写一个方法来获取:

def sum_by_index(array_2D,idx):
   s = 0
   for row in array_2D:
       s += row[idx]
   return s

如果你想要所有的总和,你可以做同样的事情但是一次性完成:

def sums_by_index(array_2D):
    s = array_2D[0]
    for row in array_2D[1:]:
        for i,entry in enumerate(row):
            s[i] += entry
    return s