Gary,
 
That works.  And it's better than my solution:
 
#a = numpy.rollaxis(a,2,0)
#a = numpy.rollaxis(a,0,1)
#a = numpy.rollaxis(a,1,0)
 
Thanks!
 
-M



> Date: Sat, 17 May 2008 17:18:39 -0700> From: [EMAIL PROTECTED]> To: [EMAIL 
> PROTECTED]> CC: python-list@python.org> Subject: Re: numpy.frombuffer != 
> unpack() ??> > Marlin Rowley wrote:> > Actually in my traversal of the 
> never-ending maze of understanding > > arrays in python, I stumbled that the 
> data in the wrong sequence.> >> > Let's get back to this transpose() deal, 
> say we have these values as > > integers (representing rgba again):> >> > 
> [[[0,1,2,3]> > [4,5,6,7]> > [8,9,10,11]> > [12,13,14,15]]> >> > 
> [[16,17,18,19]> > [20,21,22,23]> > [24,25,26,27]> > [28,29,30,31]]]> >> > Now 
> if I do this: transpose((2,0,1)), I get this:> >> > [[[0,4,8,12] 
> [16,20,24,28]]> > [[1,5,9,13] [17,21,25,29]]> > [[2,6,10,14][18,22,26,30]]> > 
> [[3,7,11,15][19,23,27,31]]]> >> > This is NOT what I want. I want the new 
> array to be:> >> > [0,4,8,12][1,5,9,13]> > [2,6,10,14][3,7,11,15]> > 
> [16,20,24,28][17,21,25,29]> > [18,22,26,30][19,23,27,31]> >> > How do I do 
> this?> > That's s little ambiguous, but one of the following two > 
> transpose-reshape-print's might be what you want.> > Gary Herron> > > import 
> numpy> > a = numpy.array([[[0,1,2,3],> [4,5,6,7],> [8,9,10,11],> 
> [12,13,14,15]],> > [[16,17,18,19],> [20,21,22,23],> [24,25,26,27],> 
> [28,29,30,31]]])> > > print numpy.reshape(a.transpose(0,2,1), (8,4))> print 
> numpy.reshape(a.transpose(0,2,1), (4,2,4))> > output is:> > [[ 0 4 8 12]> [ 1 
> 5 9 13]> [ 2 6 10 14]> [ 3 7 11 15]> [16 20 24 28]> [17 21 25 29]> [18 22 26 
> 30]> [19 23 27 31]]> > and> > [[[ 0 4 8 12]> [ 1 5 9 13]]> > [[ 2 6 10 14]> [ 
> 3 7 11 15]]> > [[16 20 24 28]> [17 21 25 29]]> > [[18 22 26 30]> [19 23 27 
> 31]]]> > > > >> > -M> >> >> >> >> >> > 
> ------------------------------------------------------------------------> >> 
> > > Date: Sat, 17 May 2008 08:58:08 -0700> > > From: [EMAIL PROTECTED]> > > 
> To: [EMAIL PROTECTED]> > > CC: python-list@python.org> > > Subject: Re: 
> numpy.frombuffer != unpack() ??> > >> > > Marlin Rowley wrote:> > > >> > > > 
> Very cool.> > > >> > > > > > a = (['rrrrggggbbbbaaaa'],['rrrrggggbbbbaaaa'])> 
> > > > a represents a tile with height of 2 and width of 4 with 4 bits/pixel> 
> > > > for each color.> > > >> > > > > >>> b = 
> numpy.frombuffer(''.join(sum(a,[])),dtype='S1')> > > > this seperates the 
> stream into individual values - Check> > > >> > > > > >>> b.shape=(2,4,4)> > 
> > >> > > > This reshapes the array so that b.shape=(height,width,#bits/pixel) 
> > > - Check> > > >> > > > >>> c = b.transpose((2,0,1))> > > >> > > > What 
> does the (2,0,1) represent in terms of width and height and> > > > number of 
> bytes?> > >> > > The (2,0,1) tells how to exchange the axes. For instance in 
> a 2D array,> > > a normal transpose exchanges rows and columns. It will 
> change a (a by> > > b) sized array into a (b by a) sized array. This would be 
> equivalent to> > > the more saying interchange axes 0,1 to the new order of 
> 1,0.> > >> > > In numpy with higher dimension arrays, the default transpose 
> just> > > exchanges the first two axes, and the full transpose allows you to> 
> > > specify exactly the new ordering of the exes.> > >> > > So 
> transpose((2,0,1)) means take axes (0,1,2) to the new order> > > (2,1,0). In 
> terms of sizes, an (a by b by c) sized array will end being> > > of size (c 
> by a by b) in size.> > >> > > In terms of implementation, there may not be 
> *any* data re-arrangement> > > in a transpose. The only thing that needs 
> changing is how the indices> > > are converted to an actual machine address 
> of an indexed item. The> > > documentation notes this by saying transpose 
> returns a "new view" of > > the> > > array. This explains why I copied the 
> array before extracting bytes> > > out of it -- you really do need the 
> elements in the new order for the> > > next operation.> > >> > > Gary Herron> 
> > >> > > >> > > >> > > >> > > >> > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> >> > > > > Date: Fri, 16 May 2008 17:08:20 -0700> > > > > From: [EMAIL 
> PROTECTED]> > > > > To: [EMAIL PROTECTED]; python-list@python.org> > > > > 
> Subject: Re: numpy.frombuffer != unpack() ??> > > > >> > > > > Marlin Rowley 
> wrote:> > > > > > All:> > > > > >> > > > > > Say I have an array:> > > > > >> 
> > > > > > a = (['rrrrggggbbbbaaaa'],['rrrrggggbbbbaaaa'])> > > > > >> > > > > 
> > How do I make it so that I now have:> > > > > >> > > > > > starting with 
> first element (a[0])> > > > > > new_arr[0] = 'r'> > > > > > new_arr[1] = 'g'> 
> > > > > > new_arr[2] = 'b'> > > > > > new_arr[3] = 'a'> > > > > > new_arr[4] 
> = 'r'> > > > > > .....> > > > > >> > > > > > continuing "through" a[1] with 
> the same new_arr> > > > > > new_arr[N] = 'r'> > > > > > new_arr[N+1] = 'g'> > 
> > > > > ....> > > > > >> > > > > > -M> > > > >> > > > > Numpy can do this for 
> you. First, do you really mean the array to> > > > > contain lists of one 
> string each? If so:> > > > >> > > > > >>> import numpy> > > > > >>> a = 
> (['rrrrggggbbbbaaaa'],['rrrrggggbbbbaaaa'])> > > > > >>> b = 
> numpy.frombuffer(''.join(sum(a,[])),dtype='S1') # Kind of a> > > > > kludge 
> here> > > > > >>> b> > > > > array(['r', 'r', 'r', 'r', 'g', 'g', 'g', 'g', 
> 'b', 'b', 'b', > > 'b', 'a',> > > > > 'a', 'a', 'a', 'r', 'r', 'r', 'r', 'g', 
> 'g', 'g', 'g', 'b', 'b',> > > > > 'b', 'b', 'a', 'a', 'a', 'a'],> > > > > 
> dtype='|S1')> > > > > >>> b.shape=(2,4,4)> > > > > >>> b> > > > > 
> array([[['r', 'r', 'r', 'r'],> > > > > ['g', 'g', 'g', 'g'],> > > > > ['b', 
> 'b', 'b', 'b'],> > > > > ['a', 'a', 'a', 'a']],> > > > >> > > > > [['r', 'r', 
> 'r', 'r'],> > > > > ['g', 'g', 'g', 'g'],> > > > > ['b', 'b', 'b', 'b'],> > > 
> > > ['a', 'a', 'a', 'a']]],> > > > > dtype='|S1')> > > > > >>> c = 
> b.transpose((2,0,1))> > > > > >>> c> > > > > array([[['r', 'g', 'b', 'a'],> > 
> > > > ['r', 'g', 'b', 'a']],> > > > >> > > > > [['r', 'g', 'b', 'a'],> > > > 
> > ['r', 'g', 'b', 'a']],> > > > >> > > > > [['r', 'g', 'b', 'a'],> > > > > 
> ['r', 'g', 'b', 'a']],> > > > >> > > > > [['r', 'g', 'b', 'a'],> > > > > 
> ['r', 'g', 'b', 'a']]],> > > > > dtype='|S1')> > > > > >>> d=c.copy() # To 
> make it contiguous> > > > > >>> d.shape = (32,)> > > > > >>> d> > > > > 
> array(['r', 'g', 'b', 'a', 'r', 'g', 'b', 'a', 'r', 'g', 'b', > > 'a', 'r',> 
> > > > > 'g', 'b', 'a', 'r', 'g', 'b', 'a', 'r', 'g', 'b', 'a', 'r', 'g',> > > 
> > > 'b', 'a', 'r', 'g', 'b', 'a'],> > > > > dtype='|S1')> > > > >> > > > > 
> Done. Cool no?> > > > >> > > > > Gary Herron> > > > >> > > > > >> > > > > >> 
> > > > > >> > > > > >> > > > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> > > > From: [EMAIL PROTECTED]> > > > > > To: [EMAIL PROTECTED]; 
> python-list@python.org> > > > > > Subject: RE: numpy.frombuffer != unpack() 
> ??> > > > > > Date: Fri, 16 May 2008 17:31:30 -0500> > > > > >> > > > > > 
> Thank you! That solved it!> > > > > >> > > > > > -M> > > > > >> > > > > >> > 
> > > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> > > >> > > > > > > To: python-list@python.org> > > > > > > From: [EMAIL 
> PROTECTED]> > > > > > > Subject: Re: numpy.frombuffer != unpack() ??> > > > > 
> > > Date: Fri, 16 May 2008 17:25:00 -0500> > > > > > >> > > > > > > Marlin 
> Rowley wrote:> > > > > > > > All:> > > > > > > >> > > > > > > > I'm getting 
> different floating point values when I use numpy> > > > > > vs. unpack().> > 
> > > > > > >> > > > > > > > frgba = numpy.frombuffer(<string of bytes>, 
> dtype=float32)> > > > > > > > buffer = unpack("!f", byte)> > > > > > > >> > > 
> > > > > > frgba[0] != buffer[0]> > > > > > > >> > > > > > > > why? This is 
> forcing me use the unpack() function since it's> > > > > > giving me> > > > > 
> > > > the correct values. What am I doing wrong?> > > > > > >> > > > > > > 
> Endianness, perhaps? '!' specifies big-endian data (an alias for> > > > > > 
> '>'). Most> > > > > > > likely, you are on a little-endian platform. All of 
> the dtypes> > > > > > in numpy default> > > > > > > to the native-endianness 
> unless specified. If you want to read> > > > > > big-endian data> > > > > > > 
> using numpy, do this:> > > > > > >> > > > > > > frgba = 
> numpy.frombuffer(<string of bytes>, dtype='>f')> > > > > > >> > > > > > > If 
> you have any more problems with numpy, please join us on the> > > > > > numpy 
> mailing> > > > > > > list. When reporting problems, please try to provide a 
> small but> > > > > > complete> > > > > > > snippet of self-contained code, 
> the output that you got, and> > > > > > explain the output> > > > > > > that 
> you expected to get. Thank you.> > > > > > >> > > > > > > 
> http://www.scipy.org/Mailing_Lists> > > > > > >> > > > > > > --> > > > > > > 
> Robert Kern> > > > > > >> > > > > > > "I have come to believe that the whole 
> world is an enigma, a> > > > > > harmless enigma> > > > > > > that is made 
> terrible by our own mad attempt to interpret it as> > > > > > though it had> 
> > > > > > > an underlying truth."> > > > > > > -- Umberto Eco> > > > > > >> > 
> > > > > > --> > > > > > > 
> http://mail.python.org/mailman/listinfo/python-list> > > > > >> > > > > >> > 
> > > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> > > > E-mail for the greater good. Join the i’m Initiative from> > > > > > 
> Microsoft.> > > > > >> > > > > > 
> <http://im.live.com/Messenger/IM/Join/Default.aspx?source=EML_WL_%20GreaterGood>>
>  > > > > >> > > > > >> > > > > >> > > > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> > > > E-mail for the greater good. Join the i’m Initiative from > > 
> Microsoft.> > > > > >> > > > > > 
> <http://im.live.com/Messenger/IM/Join/Default.aspx?source=EML_WL_%20GreaterGood>
>  > >> > > >> > > > > >> > > > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> > > >> > > > > > --> > > > > > 
> http://mail.python.org/mailman/listinfo/python-list> > > > >> > > >> > > >> > 
> > > > > 
> ------------------------------------------------------------------------> > > 
> > Keep your kids safer online with Windows Live Family Safety. Help> > > > 
> protect your kids.> > > > > > 
> <http://www.windowslive.com/family_safety/overview.html?ocid=TXT_TAGLM_WL_Refresh_family_safety_052008>
>  > >> > > >> > > > > > 
> ------------------------------------------------------------------------> > > 
> >> > > > --> > > > http://mail.python.org/mailman/listinfo/python-list> > >> 
> >> >> > 
> ------------------------------------------------------------------------> > 
> Keep your kids safer online with Windows Live Family Safety. Help > > protect 
> your kids. > > 
> <http://www.windowslive.com/family_safety/overview.html?ocid=TXT_TAGLM_WL_Refresh_family_safety_052008>
>  > >> > 
> ------------------------------------------------------------------------> >> 
> > --> > http://mail.python.org/mailman/listinfo/python-list> 
_________________________________________________________________
E-mail for the greater good. Join the i’m Initiative from Microsoft.
http://im.live.com/Messenger/IM/Join/Default.aspx?source=EML_WL_ GreaterGood
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to