2011-12-24 67 views
2

我需要用python讀取this page處的數據集。用字符串讀取文件並用loadtxt浮點數

他們非常精確的如何定義每列的數據類型。 如何使用loadtxt(這是一個numpy函數)來讀取這個數據集。我嘗試在dtype選項中給出數據類型,但它不起作用。

+0

對不起 - 知道你想從這個URL讀取什麼是令人困惑的 - 你能否給出確切的URL(指向包含數據集的框架的url),或者以其他方式描述你想要的鏈接在那裏可用的數據集? – jsbueno 2011-12-24 11:57:36

回答

3

您鏈接的網站中的表格彼此非常不同,並且您在不同列中有不同的類型。

您需要爲每個表定義一個record type
記錄類型允許您在同一個數組上聲明字符串,整數,浮點數。它的定義,並在本例中使用,如:

>>> recordtype = dtype([('name', str_, 20), ('age', int32), ('weight', float32)]) 
>>> people = array([('Joaquin', 51, 60.0), ('Cat', 18, 8.6)], dtype=recordtype) 
>>> people 
array([('Joaquin', 51, 60.0), ('Cat', 18, 8.600000381469727)], dtype=[('name', '<U20'), ('age', '<i4'), ('weight', '<f4')]) 

您與內容,如'...'即突破其上的數據的一致性行另一方面。因此,如果您需要直接從文件中讀取,則需要使用轉換器函數來獲取loadtxt轉換器參數。

或者,因爲loadtext也接受一個生成器作爲輸入,所以你可以處理生成器中的行,並用清理過的行來提供loadtext。

最後,你還應該設置skiprows參數消除表格標題

0

如果你只是想從包含字符串的列的文件的花車,但在其他方面中規中矩,方便的解決方法是使用類似

load = numpy.loadtxt('file.dat', usecols=(2,3,7)) 

其中列2,3和7分別具有浮點數並且將分別變爲load[:,0],load[:,1]load[:,2]