我試圖處理存儲在一個文本文件,它看起來像這樣test.dat
數據:但是如何只讀取文本文件中的特定行?
-1411.85 2.6888 -2.09945 -0.495947 0.835799 0.215353 0.695579
-1411.72 2.82683 -0.135555 0.928033 -0.196493 -0.183131 -0.865999
-1412.53 0.379297 -1.00048 -0.654541 -0.0906588 0.401206 0.44239
-1409.59 -0.0794765 -2.68794 -0.84847 0.931357 -0.31156 0.552622
-1401.63 -0.0235102 -1.05206 0.065747 -0.106863 -0.177157 -0.549252
....
....
該文件是幾個GB,我就非常喜歡讀它,行的小塊。我想使用numpy's
loadtxt
函數,因爲這會將所有內容快速轉換爲numpy array
。然而,我至今還沒有能夠管理的功能似乎只提供了這樣的列選擇:
data = np.loadtxt("test.dat", delimiter=' ', skiprows=1, usecols=range(1,7))
任何想法如何實現這一目標?如果loadtxt
不可用Python
中提供的其他選項?
loadtxt的fname參數可以是一個生成器,所以要讀取小塊的行使用文件讀取生成器,如http://stackoverflow.com/questions/519633/lazy-method-for-reading-big中顯示的文件讀取生成器-python中的文件,但轉換爲只讀取少量的行而不是字節。 – 2015-08-15 17:10:37
另請參見:http://stackoverflow.com/a/27962976/901925 - 「用numpy的genfromtxt讀取每第n行的最快方法」 – hpaulj