Friedrich Romstedt wrote:
> 2010/6/12 Alan Bromborsky <[email protected]>:
>   
>> If I have a single numpy array, for example with 3 indices T_{ijk} and I
>> want to sum over two them in the sense of tensor contraction -
>>
>> T_{k} = \sum_{i=0}^{n-1} T_{iik}.  Is there an easy way to do this with
>> numpy?
>>     
>
> Also you can give:
>
> T[I, I, :].sum(axis=0)
>
> a try with:
>
> I = numpy.arange(0, n)  .
>
> This has the benefit to not be limited to two-dimensional diagonals,
> like .diagonal() is.
>
>
> But note that for:
> T[:, I, I]
> the shape is reversed with respect to that of:
> T[I, :, I]  and T[I, I, :]  .
>
> I think it should be written in the docs how the shape is derived.
>
> hth,
> Friedrich
> _______________________________________________
> NumPy-Discussion mailing list
> [email protected]
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>   
Your method works, but I should have posed the general case.  You have 
an array T_{i_{1}...i_{r}} and you wish to calculate

T_{i_{1}...i_{r-2}} = 
\sum_{i_{j}=i_{k}=0}^{n-1}T_{i_{1}...i_{j}...i_{k}...i_{r}}

I don't have a clue as to how to generalize your method.
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to