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?
 



> 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.
http://www.windowslive.com/family_safety/overview.html?ocid=TXT_TAGLM_WL_Refresh_family_safety_052008
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to