[SciPy-User] How To Use Loadtxt For Floats And Strings?

Vincent Davis vincent at vincentdavis.net
Sat Jun 12 13:57:33 EDT 2010


On Sat, Jun 12, 2010 at 11:31 AM, Pierre GM <pgmdevlist at gmail.com> wrote:
> On Jun 12, 2010, at 12:55 PM, Joseph Smidt wrote:
>> a, b, c = loadtxt('myfile.txt',unpack=True,dtype=(float,float,'S16'))
>>
>> I must be doing something wrong.  What is the proper expression for
>> loadtxt?  Or must I use something else?  Thanks!

You can run what is below to better see what is happening but one
problem is that loadtxt used any white space as a delimiter. This is a
problem for "\Omega_b h^2" as "h^2" will be in another column or not
imported which may be what you want? Are the columns separated by
tabs? if so that help, you should specify the delimiter. Also I think
you need to specify the data type as I have below because you are
getting a structured array from this.

from StringIO import StringIO
import numpy as np
d = StringIO("""0.227045E-01    0.610229E-03     \Omega_b h^2
0.110213E+00    0.550143E-02     \Omega_{DM} h^2
0.103980E+01    0.263806E-02     \theta
0.893775E-01    0.147515E-01     \tau""")

print np.loadtxt(d, unpack=True, dtype=[('num1', float),('num2',
float),('s1', '|S16')])

#a, b, c = np.loadtxt(d, unpack=True, dtype=[('num1', float),('num2',
float),('s1', '|S16')])

Vincent


>
> The right side outputs 1 structured array with field names 'f0','f1' and 'f2' by default.
> You can access individual columns by
>>>> tmp =  loadtxt('myfile.txt',unpack=True,dtype=(float,float,'S16'))
>>>> (a,b,c) = [tmp["f%i" % i] for i in (0,1,2)]
>
> or something like that
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>



More information about the SciPy-User mailing list