# [SciPy-user] Vectorization question

Travis Oliphant oliphant@ee.byu....
Mon Feb 12 11:09:43 CST 2007

Anand Patil wrote:

>>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:
>
>
>
I see the difference now.  Yes, you are right, you are wanting to do a
sum of products without an outer-product.  You would have to extract the
"diagonal" of the result.

-Travis