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