Thanks Brett.  I appreciate you taking the time to help me out.  In
particular, I did not know the correct syntax for this:

data.dtype.names = names

Which is very helpful.  If I would have known how to access
data.dtype.names, I think it would have saved me a great deal of trouble.
I guess it's all part of a learning curve.  I'll keep in mind that the
period may cause problems later; however, as far as I can tell so far,
there's nothing going wrong when I access the data.

On Mon, Feb 20, 2012 at 1:35 PM, Brett Olsen <brett.ol...@gmail.com> wrote:

> On Sat, Feb 18, 2012 at 8:12 PM, Adam Hughes <hugad...@gwmail.gwu.edu>
> wrote:
> > Hey everyone,
> >
> > I have timeseries data in which the column label is simply a filename
> from
> > which the original data was taken.  Here's some sample data:
> >
> > name1.txt  name2.txt  name3.txt
> > 32              34            953
> > 32              03            402
> >
> > I've noticed that the standard genfromtxt() method works great; however,
> the
> > names aren't written correctly.  That is, if I use the command:
> >
> > print data['name1.txt']
> >
> > Nothing happens.
> >
> > However, when I remove the file extension, Eg:
> >
> > name1  name2  name3
> > 32              34            953
> > 32              03            402
> >
> > Then print data['name1'] return (32, 32) as expected.  It seems that the
> > period in the name isn't compatible with the genfromtxt() names
> attribute.
> > Is there a workaround, or do I need to restructure my program to get the
> > extension removed?  I'd rather not do this if possible for reasons that
> > aren't important for the discussion at hand.
>
> It looks like the period is just getting stripped out of the names:
>
> In [1]: import numpy as N
>
> In [2]: N.genfromtxt('sample.txt', names=True)
> Out[2]:
> array([(32.0, 34.0, 954.0), (32.0, 3.0, 402.0)],
>      dtype=[('name1txt', '<f8'), ('name2txt', '<f8'), ('name3txt', '<f8')])
>
> Interestingly, this still happens if you supply the names manually:
>
> In [17]: def reader(filename):
>   ....:     infile = open(filename, 'r')
>   ....:     names = infile.readline().split()
>   ....:     data = N.genfromtxt(infile, names=names)
>   ....:     infile.close()
>   ....:     return data
>   ....:
>
> In [20]: data = reader('sample.txt')
>
> In [21]: data
> Out[21]:
> array([(32.0, 34.0, 954.0), (32.0, 3.0, 402.0)],
>      dtype=[('name1txt', '<f8'), ('name2txt', '<f8'), ('name3txt', '<f8')])
>
> What you can do is reset the names after genfromtxt is through with it,
> though:
>
> In [34]: def reader(filename):
>   ....:     infile = open(filename, 'r')
>   ....:     names = infile.readline().split()
>   ....:     infile.close()
>   ....:     data = N.genfromtxt(filename, names=True)
>   ....:     data.dtype.names = names
>   ....:     return data
>   ....:
>
> In [35]: data = reader('sample.txt')
>
> In [36]: data
> Out[36]:
> array([(32.0, 34.0, 954.0), (32.0, 3.0, 402.0)],
>      dtype=[('name1.txt', '<f8'), ('name2.txt', '<f8'), ('name3.txt',
> '<f8')])
>
> Be warned, I don't know why the period is getting stripped; there may
> be a good reason, and adding it in might cause problems.
>
> ~Brett
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to