On Mon, Dec 8, 2008 at 14:54, Lou Pecora <[EMAIL PROTECTED]> 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
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to