>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