numpy.frombuffer != unpack() ??

Robert Kern robert.kern at gmail.com
Fri May 16 18:25:00 EDT 2008


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




More information about the Python-list mailing list