对于作业,我需要读取一个文件并写入一个numpy数组, 数据由刺和2个浮点数组成:
# naam massa(kg) radius(km)
Venus 4.8685e24 6051.8
Aarde 5.9736e24 6378.1
Mars 6.4185e23 3396.2
Maan 7.349e22 1738.1
Saturnus 5.6846e26 60268
以下是我解决这个问题的方法:
def dataread(filename):
temp = np.empty((1,3), dtype=np.object)
x = 0
f = open(filename,'r')
for line in f:
if line[0] !='#' :
l = line.split('\t')
temp[0,0], temp[0,1] , temp[0,2] = l[0] , float(l[1]) , float(l[2])
if x == 0:
data = temp
if x > 0:
data = np.vstack((data,temp))
x+=1
f.close()
return data
以某种方式返回以下数组:
[['Aarde' 5.9736e+24 6378.1]
['Aarde' 5.9736e+24 6378.1]
['Mars' 6.4185e+23 3396.2]
['Maan' 7.349e+22 1738.1]
['Saturnus' 5.6846e+26 60268.0]]
第一行正在读取但不会在数组中结束而第二行被读取两次。 我究竟做错了什么 ?我是python的新手,所以对效率的任何评论也非常感激
提前致谢
答案 0 :(得分:0)
这将在您的三列中读入一个numpy结构化数组:
import numpy as np
data = np.genfromtxt(
'data.txt',
dtypes=None, # determine types automatically
names=['name', 'mass', 'radius'],
)
print(data['name'])