[Numpy-discussion] How to sum weighted matrices

qubax@g... qubax@g...
Mon Mar 7 11:53:11 CST 2011


for your problem, you can do:

----------------------------

import numpy as np 

weights = np.array([1,2])

matrix1 = np.ones((2,3))
matrix2 = 2*np.ones((2,3))

matrices = np.array([matrix1,matrix2])

weighted_sum = np.tensordot(weights, matrices, (0,0))

--------------------------

On Mon, Mar 07, 2011 at 06:16:15AM -0600, shu wei wrote:
>    Hello all,
> 
>    I am new to python and numpy.
>    My question is how to sum up N weighted matrices.
>    For example w=[1,2] (N=2 case)
>    m1=[1 2 3,
>           3 4 5]
> 
>    m2=[3 4 5,
>           4 5 6]
>    I want to get a matrix Y=w[1]*m1+w[2]*m2 by using a loop.
> 
>    My original problem is like this
>    X=[1 2 3,
>         3 4 5,
>         4 5 6]
> 
>    a1=[1 2 3]  1st row of X
>    m1=a1'*a1 a matirx
>    a2=[3 4 5] 2nd row of X
>    m2=a2'*a2
>    a3=[ 4 5 6] 3rd row of X
>    m3=a3'*a3
> 
>    I want to get Y1=w[1]*m1+w[2]*m2
>                          Y2=w[1]*m2+w[2]*m3
>    So basically it is rolling and to sum up the weighted matries
>    I have a big X, the rolling window is relatively small.
> 
>    I tried to use
> 
>    sq=np.array([x[i].reshape(-1,1)*x[i] for i in np.arange(0,len(x)]) #
>    s=len(x)
>    m=np.array([sq[i:i+t] for i in np.arange(0,s-t+1)]) # t is the len(w)
> 
>    then I was stuck, I tried to use a loop somethig like
>    Y=np.array([np.sum(w[i]*m[j,i],axis=0) for i in np.arange(0,t)] )
>    Any suggestion is welcome.
> 
>    sue

> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion


-- 
There are two things children should get
from their parents: roots and wings.

The king who needs to remind his people of his rank, is no king.

A beggar's mistake harms no one but the beggar. A king's mistake,
however, harms everyone but the king. Too often, the measure of
power lies not in the number who obey your will, but in the number
who suffer your stupidity.


More information about the NumPy-Discussion mailing list