[Numpy-discussion] What to use to read and write numpy arrays to a file?
Robert Kern
robert.kern at gmail.com
Mon Dec 8 16:15:41 EST 2008
On Mon, Dec 8, 2008 at 14:54, Lou Pecora <lou_boog2000 at yahoo.com> wrote:
> In looking for simple ways to read and write data (in a text readable format) to and from a file and later restoring the actual data when reading back in, I've found that numpy arrays don't seem to play well with repr and eval.
>
> E.g. to write some data (mixed types) to a file I can do this (fp is an open file),
>
> thedata=[3.0,-4.9+2.0j,'another string']
> repvars= repr(thedata)+"\n"
> fp.write(repvars)
>
> Then to read it back and restore the data each to its original type,
>
> strvars= fp.readline()
> sonofdata= eval(strvars)
>
> which gives back the original data list.
>
> BUT when I try this with numpy arrays in the data list I find that repr of an array adds extra end-of-lines and that messes up the simple restoration of the data using eval.
I don't see any extra end-of-lines. Are you sure you aren't talking
about the "..." when you are saving large arrays? You will need to use
set_printoptions() to disable that (threshold=sys.maxint). You should
also adjust use precision=18, suppress=False. That should mostly work,
but it's never a certain thing.
> Am I missing something simple? I know I've seen people recommend ways to save arrays to files, but I'm wondering what is the most straight-forward? I really like the simple, pythonic approach of the repr - eval pairing.
>
> Thanks for any advice. (yes, I am googling, too)
The most bulletproof way would be to use numpy.save() and
numpy.load(), but this is a binary format, not a text one.
--
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 NumPy-Discussion
mailing list