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

Respuestas a la pregunta(3)

Su respuesta a la pregunta