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. _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion