[SciPy-user] Save a list of arrays

Mathieu Dubois mathieu.dubois at limsi.fr
Wed Apr 22 13:14:29 EDT 2009


Ryan May wrote:
> On Wed, Apr 22, 2009 at 9:19 AM, Mathieu Dubois 
> <mathieu.dubois at limsi.fr <mailto:mathieu.dubois at limsi.fr>> wrote:
>
>     Pauli Virtanen wrote:
>     > Wed, 22 Apr 2009 15:09:20 +0200, Mathieu Dubois kirjoitti:
>     >
>     >
>     >> [I have posted this message this morning but apparently it is stuck
>     >> somewhere - sorry for multi-posting]
>     >>
>     >> Hello,
>     >>
>     >> I would like to save a list of arrays (each one has a different
>     shape)
>     >> to a file.
>     >> For instance:
>     >>  >>> array1 = numpy.ones(2);
>     >>  >>> array2 = numpy.ones(5);
>     >>  >>> array3 = numpy.ones(1000);
>     >>  >>> list = [array1, array2, array3]
>     >>
>     >> As my arrays are huge (each one contains several thousands
>     values) I
>     >> would like a compressed file.
>     >> numpy.savez would be perfect (because it produces an archive of
>     binary
>     >> files) but unfortunately numpy.savez(list) doesn't work because
>     savez
>     >> needs each array individually.
>     >>
>     >> So what's the best way to do that?
>     >>
>     >
>     >
>     Hello Pauli,
>     > savez(filename, *list)
>     >
>     > The star is Python syntax for unpacking a sequence to arguments
>     Thank you for the tip this opens interesting possibilities.
>
>     Do you know something that works with named arguments (keyword
>     arguments)?
>     This would allow to set the name of the array in the archive file (by
>     default it's 'arr_0.npy').
>
>
> A dictionary and two stars:
>
> arrays = {'a':a, 'b':b, 'c':c}
> savez(filename, **arrays)
Hello Ryan,

Thank you very much this is exactly what I wanted to do. Python is very 
powerful.

Thanks also to Lev and Gabriel but using PyTable and HDF5 would have 
forced me to changed all my scripts...

Kind regards,
Mathieu



More information about the SciPy-User mailing list