[Numpy-discussion] how-to "put" RAM-based numarray into memmap

Francesc Alted falted at openlc.org
Fri Nov 21 10:06:09 EST 2003


A Divendres 21 Novembre 2003 18:28, Chris Barker va escriure:
> Sebastian Haase wrote:
> > Hi,
> > Suppose I have a 500MB-ram Computer and a 300MB ram-only (standard)
> > numarray.
> > Now I would like to "save" that onto harddrive (with a small header up
> > front
>
> How about:
>
> f = open(filename, 'wb')
> f.write(MyHeader)
> A.tofile(f)
>
> To read it back in, you need to know where your header ends, by either
> parsing it or using one of the same size every time, then you can use
> fromfile() to create an array form it.

You can also use pytables for doing that more comfortably:

>>> a=zeros([2,3,3])
>>> import tables
>>> fileh=tables.openFile("test.h5", "w")
>>> fileh.createArray(fileh.root, "array1", a, "This is a small test array")
/array1 (Array(2, 3, 3)) 'This is a small test array'
  type = Int32
  itemsize = 4
  flavor = 'NumArray'
  byteorder = 'little'
>>> fileh.close()

To read it back you only have to do:

>>> fileh=tables.openFile("test.h5", "r")
>>> a=fileh.root.array1.read()
>>> a
array([[[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])

that's all. All the headers with info about the object you are saving
are automatically saved and retrieved behind the scenes.

You can get pytables from http://pytables.sf.net

Cheers,

-- 
Francesc Alted





More information about the NumPy-Discussion mailing list