On Sun, Sep 28, 2008 at 9:47 AM, oc-spam66 <oc-spam66@laposte.net> wrote:

Hello,

I have two lists of numpy matrices : LM = [M_i, i=1..N] and LN = [N_i, i =1..N]
and I would like to compute the list of the products : LP = [M_i * N_i, i=1..N].

I can do :

P=[]
for i in range(N) :
P.append(LM[i]*LN[i])

But this is not vectorized. Is there a faster solution ?
Can I vectorize this operation ? How ?
Will it be more efficient than the code above ?

Thank you for your help,

There are at least three methods I can think of, but choosing the best one requires more information. How long are the lists? Do the arrays have variable dimensions? The simplest and most adaptable method is probably something like
 
In [1]: M = [matrix(eye(3))]*5

In [2]: N = [matrix(eye(3))]*5

In [3]: P = [m*n for m,n in zip(M,N)]

In [4]: P
Out[4]:
[matrix([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]]),
 matrix([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]]),
 matrix([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]]),
 matrix([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]]),
 matrix([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]])]

Chuck