From: Jon S. <js...@wm...> - 2001-03-19 21:23:32
|
Probably this can help you. Look in the manual about the ... operator, too. bash-2.02$ python Python 1.6b1 (#3, Aug 30 2000, 08:32:49) [GCC 2.7.2.1] on freebsd3 Copyright (c) Corporation for National Research Initiatives. Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam. >>> from Numeric import * >>> a=array([[2,3],[4,5],[6,7]]) >>> b=array([9,10,11]) >>> a.shape (3, 2) >>> b.shape (3,) >>> print a+b[:,NewAxis] [[11 12] [14 15] [17 18]] >>> Jon Saenz. | Tfno: +34 946012470 Depto. Fisica Aplicada II | Fax: +34 944648500 Facultad de Ciencias. \\ Universidad del Pais Vasco \\ Apdo. 644 \\ 48080 - Bilbao \\ SPAIN On Mon, 19 Mar 2001, Aureli Soria Frisch wrote: > Hello! > > I have a N-dimensional array A and I want to operate in one of the axis (k) > with a 1 dimensional array (for instance, subtracting an array B of length > k). I have looked for some solutions in the manual and did not found any. > > So after testing a lot I found following solution: > > A=Numeric.array(a) > > A.shape=(a1,a2,...,ak,...,aN) #where N is any int value > > B=Numeric.array(b) > B.shape=(ak,) > > > A_modified=Numeric.reshape(A, (a1*a2*...*aN,ak)) #ak is not included in the > product > > result=[] > for i in A_modified: > result.append(i - B) > > > and finally reshaping the result appropriately. But it does not seem > neither elegant nor simple. > > Is there any more elegant solution? The key point is: how to operate a N-D > array with a 1D in one determined axis? > > Thanks in advance. > Regards, > Aureli > > > > > ################################# > Aureli Soria Frisch > Fraunhofer IPK > Dept. Pattern Recognition > > post: Pascalstr. 8-9, 10587 Berlin, Germany > e-mail:au...@ip... > fon: +49 30 39 00 61 50 > fax: +49 30 39 17 517 > ################################# > > > > _______________________________________________ > Numpy-discussion mailing list > Num...@li... > http://lists.sourceforge.net/lists/listinfo/numpy-discussion > |