[SciPy-user] Vectorization question
Anand Patil
anand at soe.ucsc.edu
Fri Feb 9 21:00:03 EST 2007
>Anand Patil wrote:
>>/Hi all,
/>>/
/>>/I want to make array A from array B like so:
/>>/
/>>/A[t, j, k] = \sum_i B[t, j, i] B[t, i, k]
/>>/
/>>/That is, for each t
/>>/
/>>/A[t,] = dot(B[t,], B[t,])
/>>/
/>>/There's no loopless way to do this in numpy, right?
/>>/
/>>/
/>You should be able to do this just using
>
>A = dot(B,B)
>
>Because the dot function returns the sum of products over the last
>dimension of the first argument and the second-to-last dimension of the
>second argument.
>
>-Travis
The output array I'm looking for is rank-3, but as I understand them dot and tensordot can only ever return even-rank arrays:
In [1]: from numpy import zeros, dot
In [2]: B=zeros((4,3,3))
In [3]: dot(B,B).shape
Out[3]: (4, 3, 4, 3)
In [4]:
Thanks,
Anand
More information about the SciPy-User
mailing list