[Numpy-discussion] Saving and loading a structured array from a TEXT file
Derek Homeier
derek at astro.physik.uni-goettingen.de
Mon Jan 23 16:28:47 EST 2012
On 23 Jan 2012, at 22:07, Derek Homeier wrote:
>> In [4]: r = np.ones(3,dtype=[('name', '|S5'), ('foo', '<i8'), ('bar', '<f8')])
>>
>> In [5]: r.tofile('toto.txt',sep='\n')
>>
>> bash-4.2$ cat toto.txt
>> ('1', 1, 1.0)
>> ('1', 1, 1.0)
>> ('1', 1, 1.0)
>>
>
> cnv = {0: lambda s: s.lstrip('('), -1: lambda s: s.rstrip(')')}
> r2 = np.loadtxt('toto.txt', delimiter=',', converters=cnv, dtype=r.dtype)
>
> Generally loadtxt works more smoothly together with savetxt, but the latter unfortunately
> does not offer an easy way to save structured arrays (note to self and others currently
> working on npyio: definitely room for improvement!).
For the record, in that example
np.savetxt('toto.txt', r, fmt='%s,%d,%f')
would work as well, saving you the custom converter for loadtxt - it could just become tedious
to work out the format for more complex structures, so an option to construct this automatically
from r.dtype could certainly be a nice enhancement.
Just wondering, is there something like the inverse operator to np.format_parser, i.e.
mapping each dtype to a default print format specifier?
Cheers,
Derek
More information about the NumPy-Discussion
mailing list