numpy: producto de punto en columna
Dado una @ numpy
array, necesito calcular el producto escalar de cada columna consigo mismo y almacenar el resultado en una matriz 1D. Los siguientes trabajos:
In [45]: A = np.array([[1,2,3,4],[5,6,7,8]])
In [46]: np.array([np.dot(A[:,i], A[:,i]) for i in xrange(A.shape[1])])
Out[46]: array([26, 40, 58, 80])
¿Hay alguna forma simple de evitar el bucle de Python? Lo anterior no es el fin del mundo, pero si hay unanumpy
primitivo para esto, me gustaría usarlo.
edita En la práctica, la matriz tiene muchas filas y relativamente pocas columnas. Por lo tanto, no estoy demasiado interesado en crear matrices temporales más grandes queO(A.shape[1])
. Tampoco puedo modificarA
en su lugar