shoehorn c-structured data into Numpy
Scott David Daniels
Scott.Daniels at Acm.Org
Sun Jun 14 16:32:07 EDT 2009
MRAB wrote:
> Helmut Fritz wrote:
>> I have binary output
>> from a Fortran program that is in a big-endian C-structured binary
>> file. The output can be very variable and many options create
>> different orderings in the binary file. So I'd like to keep the
>> header-reading in python.
>>
>> Anyhoo, I've so far been able to read the output with the struct
>> module. But my question is how do I create numpy arrays from the bits
>> of the file I want?
>> TC1 = np.frombuffer(struct.unpack(">%df" % ncells,
>> data.read(4*ncells))[0], dtype=float)
Note both struct and numpy.frombuffer unpack data from a buffer.
Do it only once:
If you are going to a numpy array:
TC1 = np.frombuffer(data.read(4*ncells)), dtype=float)
# and possibly:
TC1.byteswap(True) # True to byteswap in place.
Or (even better -- less copying):
TC1 = np.fromfile(data, count=ncells, dtype=float)
# and again, possibly:
TC1.byteswap(True) # True to byteswap in place.
--Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-list
mailing list