Python 加载.dat文件时出现问题

Python 加载.dat文件时出现问题,python,numpy,python-3.7,Python,Numpy,Python 3.7,根据我的指导老师的说法,“galaxy_data.dat”下面的数据文件应该包含3列,第一列是星系的名称(忽略),第二列和第三列是银河系的衰退速度和光在银河系中的消光。每列应该包含8个星系的数据,但当我尝试使用np.loadtxt将数据放入数组并打印这些数组时,我只得到两位数据 data_array9 = np.loadtxt("galaxy_data.dat", dtype= "float", usecols = (1,2)) recessional_velocity = data_array

根据我的指导老师的说法,“galaxy_data.dat”下面的数据文件应该包含3列,第一列是星系的名称(忽略),第二列和第三列是银河系的衰退速度和光在银河系中的消光。每列应该包含8个星系的数据,但当我尝试使用np.loadtxt将数据放入数组并打印这些数组时,我只得到两位数据

data_array9 = np.loadtxt("galaxy_data.dat", dtype= "float", usecols = (1,2))
recessional_velocity = data_array9[1]
V_band_extinction = data_array9[2]
当我打印两个数组时

in: recessional_velocity
Out: array([1.51e+03, 4.34e-02]) (two bits of data)

in: V_band_extinction
Out: array([1.152e+03, 7.750e-02]) (two bits again)
我不知道这是不是我的代码出了问题,或者是文件搞乱了。救命啊

编辑:我将数据文件转换为文本文件,如下所示:


索引错误-您得到的是行而不是列

试试这个:

t = '''#Galaxy       Recession       A_{V,MW}
#Name     Velocity (km/s)     (mag)
NGC3627       427         0.0992
NGC3982       1510            0.0434
NGC4496A  1152            0.0775
NGC4527       1152            0.0682
NGC4536       1152            0.0558
NGC4639       1152            0.0806
NGC5253       170         0.1736
IC4182        303         0.0434'''  

with open("f.txt","w") as f:
    f.write(t)


import numpy as np

data_array9 = np.loadtxt("f.txt", dtype= "float", usecols = (1,2))


# recessional_velocity 
print(data_array9[:,0])   # [ 427. 1510. 1152. 1152. 1152. 1152.  170.  303.]

# V_band_extinction 
print(data_array9[:,1])   # [0.0992 0.0434 0.0775 0.0682 0.0558 0.0806 0.1736 0.0434]

您打印的不是两列,而是两行,每行都有您在文件中看到的两个值。要查看列,请使用
数据数组9[:,0]
[:,1]
。谢谢您修复了它。我对编码是如此陌生,但这是非常明显的!
t = '''#Galaxy       Recession       A_{V,MW}
#Name     Velocity (km/s)     (mag)
NGC3627       427         0.0992
NGC3982       1510            0.0434
NGC4496A  1152            0.0775
NGC4527       1152            0.0682
NGC4536       1152            0.0558
NGC4639       1152            0.0806
NGC5253       170         0.1736
IC4182        303         0.0434'''  

with open("f.txt","w") as f:
    f.write(t)


import numpy as np

data_array9 = np.loadtxt("f.txt", dtype= "float", usecols = (1,2))


# recessional_velocity 
print(data_array9[:,0])   # [ 427. 1510. 1152. 1152. 1152. 1152.  170.  303.]

# V_band_extinction 
print(data_array9[:,1])   # [0.0992 0.0434 0.0775 0.0682 0.0558 0.0806 0.1736 0.0434]