1

这是我的代码:

if __name__ == '__main__':
  fid = open ('200502.txt')
  data = fid.readlines()
  data = map (string.strip, data)
  x = []
  y = [] 
  da = []
  for d in data:
    s = d.split()
    x.append(float(s[0])/10000.0)
    y.append(float(s[1])/10000.0)
    da.append(float(s[2]))

当我运行它时,我得到:

Traceback (most recent call last):
  File "plot_data.py", line 286, in ?
    x.append(float(s[0])/10000.0)
IndexError: list index out of range

200502.txt (840kb) 文件如下:

1131087 224529 3.923   
1131096 224529 3.958 
1131106 224530 3.897    
1131116 224530 3.917   
1131126 224530 3.847 
(....)
4

2 回答 2

3

这是加载数据的一种脆弱方式。我的猜测是它在文件末尾换行,或者类似的东西。无论如何,您应该numpy.loadtxt改为加载文件(csv如果您无权访问,则使用模块numpy)。

为了让你开始:

>>> import numpy
>>> data = numpy.loadtxt('/tmp/200502.txt')
>>> xs = data.T[0]/10000.
>>> ys = data.T[1]/10000.
>>> da = data.T[2]
于 2012-08-02T03:26:34.837 回答
0

输入文件中至少有一个元素不包含数据。您正在迭代data,其中一个元素正在从 生成一个长度为 0 的列表d.split()。我还建议考虑将您的数据加载到更结构化的组织中。类似的东西loaded_data = [zip(('x', 'y', 'da'), d.split()) for d in data]

于 2012-08-02T03:26:56.683 回答