2016-11-15 93 views
1

我有一个巨大的文本文件中读取文本文件导入numpy的阵列,虚拟版本看起来像这样跳过头后:问题用熊猫读者

1444455  7  8  12 52 45 68 70 

1356799  3  3  45 34 23 22 11 

我想读入一个numpy的阵列和NP这.loadtxt工作非常缓慢。该文件的名称是data.txt。现在我正在使用:

u=pd.read_csv('data.txt',dtype=np.float16,header=3).values 

我玩过的参数无济于事。如果我忽略了dtype,那么我的数组中的每一行都会得到一串长长的数字。当我插入dtype时,我得到错误:float()的无效文字。我相信对文本文件中的两种分隔符(制表符和单个空格)也存在一些困惑。我怎样才能把它变成一个形状不规则的数组(2,8)。

难道你们有谁能帮忙吗? 感谢

回答

2

看来你需要delim_whitespace=Trueread_csv如果分隔符是空格和header=None

然后转换为float

u=pd.read_csv('data.txt', delim_whitespace=True, header=None).astype(float).values 

print (u) 
[[ 1.44445500e+06 7.00000000e+00 8.00000000e+00 1.20000000e+01 
    5.20000000e+01 4.50000000e+01 6.80000000e+01 7.00000000e+01] 
[ 1.35679900e+06 3.00000000e+00 3.00000000e+00 4.50000000e+01 
    3.40000000e+01 2.30000000e+01 2.20000000e+01 1.10000000e+01]] 

numpy.float64

u=pd.read_csv('data.txt', delim_whitespace=True, header=None).astype(float) 

print (type(u.loc[0,0])) 
<class 'numpy.float64'> 

如果使用dtype=np.float16得到inf

u=pd.read_csv('data.txt', dtype=np.float16, delim_whitespace=True, header=None).values 
print (u) 
[[ inf 7. 8. 12. 52. 45. 68. 70.] 
[ inf 3. 3. 45. 34. 23. 22. 11.]] 
+0

非常感谢! – Canuck

+0

谢谢你的接受。您也可以注册 - 点击接受标记上方'0'上方的小三角。谢谢。 – jezrael