Python 2.7 索引器:字符串索引超出范围python,numpy
我已经有很长一段时间了,我一直在扯我的头发。如果我运行一个输入文件Python 2.7 索引器:字符串索引超出范围python,numpy,python-2.7,numpy,Python 2.7,Numpy,我已经有很长一段时间了,我一直在扯我的头发。如果我运行一个输入文件 # 96.52 0.0036 # # 0.860 9.38 0.938 35 I I_band 1.235 6.452 0.030 41 J 2MASS 1.66 5.471 0.021 42 H 2MASS 2.16 5.069 0.023 43 K 2MASS 9.0 9.760e-01
# 96.52 0.0036
#
#
0.860 9.38 0.938 35 I I_band
1.235 6.452 0.030 41 J 2MASS
1.66 5.471 0.021 42 H 2MASS
2.16 5.069 0.023 43 K 2MASS
9.0 9.760e-01 8.51e-03 0 AKARI09 0.52
18.0 2.609e-01 3.67e-02 0 AKARI18 0.52
#
我明白了
File 'myfile.py', line 811, in <module>
err=np.append(err,data[i][2])
IndexError: string index out of range
代码正常工作。这两个示例都保存为.dat文件,系统会提示我将代码指向该文件
我已经花了24个小时试图解决这个问题(我知道,对吧?),但完全没有成功。我不能准确地指出我的问题。在这一点上,任何建议都将受到欢迎。一如既往地谢谢你
编辑:如果我将xranges(大约800行)更改为“range”,并向后扩展为append(请参见第792行和第798行),我现在将得到以下错误:
File 'myfile.py', line 807, in <module>
if(data[i]=='#'): comments=comments+1
IndexError: list index out of range
文件'myfile.py',第807行,在
如果(数据[i]='#'):注释=注释+1
索引器:列表索引超出范围
我没有时间看完你的1000多行代码(我怀疑很多人会看完)。但从我所能看到的,你似乎在试图重新发明你阅读文件的方式。出现错误是因为某些列中的数据数组的类型/大小与您预期的不同
我建议你熟悉一下numpy的功能。您可能只需一次调用就可以获得所需格式的大部分文件数据。(代码中的所有打开调用似乎都是二进制的,因此我不知道文本文件是如何输入的。)我不知道您的格式是什么,但例如,您可以执行以下操作:
import numpy as np
result = np.genfromtxt('file', dtype=[('wave','f'), ('flux', 'f'),
('err', 'f'), ('code', 'i'),
('band', 'S8'), ('survey', 'S8')])
结果是一个结构化数组,您可以通过dtype
字符串对其进行索引:
In [16]: result['wave']
Out[16]:
array([ 0.86000001, 1.23500001, 1.65999997, 2.16000009,
9. , 18. ], dtype=float32)
In [17]: result['err']
Out[17]:
array([ 0.93800002, 0.03 , 0.021 , 0.023 , 0.00851 ,
0.0367 ], dtype=float32)
In [18]: result['band']
Out[18]:
array(['I', 'J', 'H', 'K', 'AKARI09', 'AKARI18'],
dtype='|S8')
在这里,我将最后一列保存为字符串,因此您可能需要转换最后两行中的数字。谢谢您的建议。这是其他人的代码,我正在尝试让它为多个数据文件工作。令人沮丧的。再次感谢。
In [16]: result['wave']
Out[16]:
array([ 0.86000001, 1.23500001, 1.65999997, 2.16000009,
9. , 18. ], dtype=float32)
In [17]: result['err']
Out[17]:
array([ 0.93800002, 0.03 , 0.021 , 0.023 , 0.00851 ,
0.0367 ], dtype=float32)
In [18]: result['band']
Out[18]:
array(['I', 'J', 'H', 'K', 'AKARI09', 'AKARI18'],
dtype='|S8')