Вы можете сделать это без необходимости использования Numpy, просто используя базовые возможности Python.(Все подсписки должны иметь одинаковую длину)
l = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
result = [sum(subL[i] for subL in l) for i in range(len(l[0]))]
Или без понимания списка:
result = []
for i in range(len(l[0])):
n = 0
for x in l:
n += subL[i]
result.append(n)
Оба выдают результат [22, 26, 30]
.
Если выЯ заинтересован в производительности, я написал это (не уверен, если она обвиняется):
from timeit import timeit
import numpy as np
l = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
def listComprehension():
result = [sum(subL[i] for subL in l) for i in range(len(l[0]))]
def basic():
result = []
for i in range(len(l[0])):
n = 0
for subL in l:
n += subL[i]
result.append(n)
def zipped():
result = [sum(column) for column in zip(*l)]
def numpyied():
arr = np.array(l)
result = arr.sum(axis=0)
print(timeit("listComprehension()", setup = "from __main__ import listComprehension"))
# 3.738487364
print(timeit("basic()", setup = "from __main__ import basic"))
# 1.953782115
print(timeit("zipped()", setup = "from __main__ import zipped"))
# 1.413262091
print(timeit("numpyied()", setup = "from __main__ import numpyied"))
# 9.576366059999998
Удивительно, но numpy
медленнее, но я не могу сказать, почему.(Две последние функции были взяты из ответа @ Tomothy32 )