[Numpy-discussion] Numeric - fromfile ?
Arnd Baecker
arnd.baecker at web.de
Tue Aug 23 00:43:08 EDT 2005
On Tue, 23 Aug 2005, Alexandre Fayolle wrote:
> On Mon, Aug 22, 2005 at 01:27:55PM -0400, Hari Sundar wrote:
> > Hi,
> >
> > Is there a function similar to numarray's fromfile, to read a binary array
> > from a file ? What is the best way to read such a file into a Numeric array.
Another option is to use scipy.io, e.g.:
In [5]:scipy.io.fread?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function fread>
Namespace: Interactive
Docstring:
g = numpyio.fread( fid, Num, read_type { mem_type, byteswap})
fid = open file pointer object (i.e. from fid =
open('filename') )
Num = number of elements to read of type read_type
read_type = a character in 'cb1silfdFD' (PyArray types)
describing how to interpret bytes on disk.
OPTIONAL
mem_type = a character (PyArray type) describing what kind of
PyArray to return in g. Default = read_type
byteswap = 0 for no byteswapping or a 1 to byteswap (to handle
different endianness). Default = 0.
I use this a lot and it works very well.
For example:
from scipy import *
# --- Create some arrays:
x=arange(10)/10.0
z=zeros( (5,5),"d")
z_complex=zeros( (5,7),"D")
# --- write them as binary data:
fp=file("x.dat","wb")
io.fwrite(fp,len(x),x)
fp.close()
fp=file("z.dat","wb")
io.fwrite(fp,z.shape[0]*z.shape[1],z)
fp.close()
fp=file("z_complex.dat","wb")
io.fwrite(fp,z_complex.shape[0]*z_complex.shape[1],z_complex)
fp.close()
# --- and read them back
fp=file("x.dat","rb")
x_read=io.fread(fp,10,"d")
fp.close()
fp=file("z.dat","rb")
z_read=reshape(io.fread(fp,5*5,"d"),(5,5))
fp.close()
fp=file("z_complex.dat","rb")
z_complex_read=reshape(io.fread(fp,5*7,"D"),(5,7))
fp.close()
Remark: `"wb"` and `"rb"` is only needed under Windows,
normally `"w"` and `"r"` would be enough.
Best,
Arnd
More information about the NumPy-Discussion
mailing list