Суммирование каждого массива внутри списка

#python #arrays #numpy #sum

Вопрос:

У меня есть список массивов, сгенерированных из другой функции:

 testGroup = [array([18]), array([], dtype=int64), array([56, 75, 55, 55]), array([32])]
 

Я хотел бы вернуть сумму каждого отдельного массива в списке, а пустые возвращать как ноль

Я пробовал использовать numpy, согласно документации:

 np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])
 

Но когда я пытаюсь np.sum(testGroup, axis=1) , я получаю ошибку оси, так как я полагаю, что пустые массивы имеют размерность меньше единицы?

Я также попытался подвести итог напрямую arraySum = sum(testGroup) , но получил ошибку значения

Есть идеи о том, как получить сумму массивов внутри testGroup списка?

Ответ №1:

testGroup это простой список python, который содержит numpy.array элементы. Вместо этого вы можете использовать понимание списка

 >>> [np.sum(a) for a in testGroup]
[18, 0, 241, 32]
 

Комментарии:

1. Спасибо! Это сработало

Ответ №2:

Попробуй list(map(np.sum, testGroup)) , это даст

 [18, 0, 241, 32]
 

Комментарии:

1. Спасибо! Спасибо, что нашли время помочь мне

Ответ №3:

Вы можете использовать так называемое понимание списка, чтобы применить функцию к каждому элементу списка следующим образом

 import numpy as np
testGroup = [np.array([18]), np.array([], dtype=np.int64), np.array([56, 75, 55, 55]), np.array([32])]
totals = [np.sum(i) for i in testGroup]
print(totals)
 

выход

 [18, 0, 241, 32]
 

Комментарии:

1.Спасибо! Спасибо, что нашли время помочь мне