2016-05-26 6 views
1

У меня есть массивСумма элементы каждого элемента массива

[array([ 2.46000000e-02, 4.28211000e+01, 7.95400000e+00]), array([ 0.0987, 15.1704, 7.5235]), array([ 0.2502, 7.5852, 0.041 ])] 

Я найти сумму элементов в строках массива для элемента в ACB, который массив выше:

for item in acb: 
    print sum(item) 



50.7997 
22.7926 
7.8764 

Я хотел бы, чтобы сформировать массив с номерами выше 50.799,22.79,7.87

Благодаря

+0

Вы знаете, как вычислить сумму одного массива? Просто делайте это в цикле или в понимании массива. – Barmar

+0

'sum (itertools.chain (list_of_arrays))' –

+0

спасибо, я просто хочу получить массив назад somearray [50.79 и т. Д.] – Cliff

ответ

2

Если вы не имеете массивов в качестве многомерного массива Numpy вы можете использовать np.sum() для того, чтобы получить сумму элементов над второй осью:

>>> A = [np.array([ 2.46000000e-02, 4.28211000e+01, 7.95400000e+00]), np.array([ 0.0987, 15.1704, 7.5235]), np.array([ 0.2502, 7.5852, 0.041 ])] 
>>> A = np.array(A) 
>>> 
>>> np.sum(A, axis=1) 
array([ 50.7997, 22.7926, 7.8764]) 

Обратите внимание, что это было бы более эффективным, если вы имеете дело с большие наборы данных, иначе вы можете просто использовать функцию map(), чтобы получить сумму всех массивов в списке (в python3 итераторе).

1

Вы можете просто преобразовать эту петлю в списке понимание:

>>> [sum(item) for item in acb] 
[50.799700000000001, 22.7926, 7.8764000000000003] 

Если вы хотите numpy.array, либо преобразовать результат соответственно ...

>>> np.array(_) 
array([ 50.7997, 22.7926, 7.8764]) 

... или использовать np.sum с axis параметр:

>>> np.sum(acb, axis=1) 
array([ 50.7997, 22.7926, 7.8764]) 
0

вы можете сделать это так:

np.array([sum(i) for i in acb]) 

тест:

In [71]: np.array([sum(i) for i in acb]) 
Out[71]: array([ 50.7997, 22.7926, 7.8764]) 

или, как уже было сказано просто:

In [72]: np.sum(acb, axis=1) 
Out[72]: array([ 50.7997, 22.7926, 7.8764]) 

это, скорее всего, будет быстрее

Смежные вопросы