Суммарные значения Python из нескольких списков (более двух) - PullRequest
0 голосов
/ 08 октября 2018

В поисках питонического способа суммирования значений из нескольких списков: я получил следующий список списков:

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]

I`ve used:

print ([sum(x) for x in zip(*my_list )])

, но zip работает только тогда, когда в my_list есть 2 элемента.Есть идеи?

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

zip работает для произвольного числа итераций:

>>> list(map(sum, zip(*my_list)))
[8, 10, 8]

, что, конечно, примерно эквивалентно вашему пониманию, которое также работает:

>>> [sum(x) for x in zip(*my_list)]
[8, 10, 8]
0 голосов
/ 08 октября 2018

Я бы сделал это массивом numpy, а затем суммировал бы по оси 0:

my_list = numpy.array([a,b,c,d])    
my_list.sum(axis=0)

Вывод:

[ 8 10  8]
0 голосов
/ 08 октября 2018

У Numpy есть хороший способ сделать это, он также может обрабатывать очень большие массивы.Сначала мы создадим my_list в виде массива numy следующим образом:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...