2016-11-15 91 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