2013-11-27 37 views
10

我對python頗爲陌生 - 實際上,對於編程來說一般來說是新的,儘管我恐怕我不能永遠使用這個藉口 - 並且很好奇知道這個線程標題中提到的兩個函數之間的區別。從包含文檔的網站上,它說:「當沒有數據丟失時,numpy.loadtxt [是] [等同]功能。」究竟是什麼意思?這是否意味着,例如,如果我有一個csv文件,其中包含數據的兩列之間有一個空白列,我不應該numpy.loadtxt。numpy.genfromtxt和numpy.loadtxt之間的區別和解壓

而且,這是什麼意思,

"unpack : bool, optional 
If True, the returned array is transposed, so that arguments may be unpacked using x, y, z = loadtxt(...)" 

我不是爲這是什麼意思很肯定。

我很感謝您的幫助,謝謝!

回答

10

你是對的。使用np.genfromtxt可爲您提供一些選項,如參數missing_values,filling_values,可幫助您處理不完整的csv。例如:

1,2,,,5 
6,,8,, 
11,,,, 

可以用閱讀:

filling_values = (111, 222, 333, 444, 555) # one for each column 
np.genfromtxt(filename, delimiter=',', filling_values=filling_values) 
#array([[ 1., 2., 333., 444., 5.], 
#  [ 6., 222., 8., 444., 555.], 
#  [ 11., 222., 333., 444., 555.]]) 

參數,當你想要把文本文件中的每一列在一個不同的變量unpack是非常有用的。例如,你有列x, y, z的文本文件,然後:

x, y, z = np.loadtxt(filename, unpack=True) 

注表示遍歷線,這種工作方式相同

x, y, z = np.loadtxt(filename).T 

默認情況下迭代一個2-d陣列,這是爲什麼在這個例子中你必須轉置或使用unpack=True

+3

另一個不錯的選擇,只有'np.genfromtxt'有:如果你想有一個帶字段的結構化數組,因爲它允許你說'names = True',並且字段名將自動從第一行文件。 – askewchan