#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.Спасибо! Спасибо, что нашли время помочь мне