On Fri, Jul 18, 2008 at 4:16 PM, Ryan May <[EMAIL PROTECTED]> wrote:

> Hi,
>
> I was trying to use loadtxt() today to read in some text data, and I had a
> problem when I specified a dtype that only contained as many elements as in
> columns in usecols.  The example below shows the problem:
>
> import numpy as np
> import StringIO
> data = '''STID RELH TAIR
> JOE 70.1 25.3
> BOB 60.5 27.9
> '''
> f = StringIO.StringIO(data)
> names = ['stid', 'temp']
> dtypes = ['S4', 'f8']
> arr = np.loadtxt(f, usecols=(0,2),dtype=zip(names,dtypes), skiprows=1)
>
> With current 1.1 (and SVN head), this yields:
>
> IndexError                                Traceback (most recent call last)
>
> /home/rmay/<ipython console> in <module>()
>
> /usr/lib64/python2.5/site-packages/numpy/lib/io.pyc in loadtxt(fname,
> dtype, comments, delimiter, converters, skiprows, usecols, unpack)
>    309                             for j in xrange(len(vals))]
>    310         if usecols is not None:
> --> 311             row = [converterseq[j](vals[j]) for j in usecols]
>    312         else:
>    313             row = [converterseq[j](val) for j,val in
> enumerate(vals)]
>
> IndexError: list index out of range
> ------------------------------------------
>
> I've added a patch that checks for usecols, and if present, correctly
> creates the converters dictionary to map each specified column with
> converter for the corresponding field in the dtype. With the attached patch,
> this works fine:
>
> >arr
> array([('JOE', 25.300000000000001), ('BOB', 27.899999999999999)],
>      dtype=[('stid', '|S4'), ('temp', '<f8')])
>
> Comments?  Can I get this in for 1.1.1?
>

Can someone familiar with loadtxt comment on this patch?

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to