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