【发布时间】:2017-03-26 07:33:51
【问题描述】:
我正在尝试使用此代码从恒星目录中绘制 .dat 文件
try:
import pyfits
noPyfits=False
except:
noPyfits=True
import matplotlib.pyplot as plt
import numpy as np
f2 = open('/home/mcditoos/Desktop/Astrophysics_programs/Data_LAFT/ESPECTROS/165401.dat', 'r')
lines = f2.readlines()
f2.close()
x1 = []
y1 = []
for line in lines:
p = line.split()
x1.append(float(p[0]))
y1.append(float(p[1]))
xv = np.array(x1)
yv = np.array(y1)
plt.plot(xv, yv)
plt.show()
但是我得到以下错误:
x1.append(float(p[0]))
IndexError: list index out of range
我也想知道是否有办法让它成为一个能够在给定输入的情况下打开下一个 .dat 文件的程序
【问题讨论】:
-
打印前试过检查
p的长度吗? -
我做了,是 2
-
当数组长度为 2 时,它不可能在索引 0 处给出 IndexError。这是在调用
x1.append(float(p[0]))之前使用print(len(p)) -
好像可以,我刚刚上传了图片,我只是使用np.loadtxt()工具解决了问题
-
控制台中的每一个数字都是2?因为即使其中一个小于 2 也会导致 IndexError 所以尝试
for line in lines: p = line.split() if (len(p) > 1): x1.append(float(p[0])) y1.append(float(p[1]))
标签: python matplotlib astronomy