vectors multiply array python multidimensional-array sum

python - array - numpy multiply matrix



¿Cómo puedo resumir una matriz multidimensional en la python más sucinta? (5)

Otra solución que usa itertools :

>>> from itertools import chain >>> my_list = [ [1,2,3,4], [2,4,5,6] ] >>> sum(chain(*my_list)) 27

Lo más cercano fue esta una suma de columnas .

Así que haré algo similar en mi pregunta:

Digamos que tengo una lista 2D de Python como la siguiente:

my_list = [ [1,2,3,4], [2,4,5,6] ]

Puedo obtener los totales de la fila con una lista de comprensión:

row_totals = [ sum(x) for x in my_list ]

En una línea, ¿cómo puedo sumar toda la matriz 2d?

27


Puedes hacer tan fácil como

sum(map(sum, my_list))

o alternativamente

sum(sum(x) for x in my_list))

y llámalo un día, si no esperas más de 2 dimensiones. Tenga en cuenta que la primera solución probablemente no sea la más rápida (como en tiempo de ejecución), debido al uso de map() . Compare y compare según sea necesario.

Finalmente, si te encuentras usando matrices multidimensionales, considera usar NumPy y sus funciones superiores amigables para arreglos. Aquí hay un breve extracto de su problema:

import numpy as np my_list = np.array([[1,2,3,4], [2,4,5,6]]) np.sum(my_list)

Esto funcionaría para cualquier cantidad de dimensiones que puedan tener sus matrices.


>>> from itertools import chain >>> my_list = [[1,2,3,4], [2,4,5,6]] >>> sum(chain.from_iterable(my_list)) 27


>>> sum ( [ sum(x) for x in [[1,2,3,4], [2,4,5,6]] ] ) 27


Puede usar sum para primero agregar las listas internas y luego sumar la lista aplanada resultante:

>>> my_list = [ [1,2,3,4], [2,4,5,6] ] >>> sum(my_list, []) [1, 2, 3, 4, 2, 4, 5, 6] >>> sum(sum(my_list, [])) 27