numpy: produto de ponto em colunas

Dou um 2Dnumpy array, eu preciso calcular o produto escalar de cada coluna consigo e armazenar o resultado em um array 1D. Os seguintes trabalhos:

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])

Existe uma maneira simples de evitar o loop Python? O exposto acima dificilmente é o fim do mundo, mas se houver umnumpy primitivo para isso, eu gostaria de usá-l

edita Na prática, a matriz possui muitas linhas e relativamente poucas colunas. Portanto, não estou muito interessado em criar matrizes temporárias maiores queO(A.shape[1]). Também não consigo modificarA no lugar

questionAnswers(3)

yourAnswerToTheQuestion