2017-01-18 34 views
-1

我正在從實驗中生成數據集。我結束了CSV數據集,其典型是n x 4維(n行; n > 10004列)。但是,由於數據收集過程的工件,通常第一對行和最後幾行只有2或3列。所以一個數據集看起來像:用Numpy導入數據時排除某些行

8,0,4091 
8,0, 
8,0,4091,14454 
10,0,4099,14454 
2,0,4094,14454 
8,-3,4104,14455 
3,0,4100,14455 
.... 
.... 
14,-1,4094,14723 
0,3,4105,14723 
7,0,4123,14723 
7, 
6,-2,4096, 
3,2, 

正如你所看到的,前兩行和最後三個沒有我期望的4列。當我嘗試將此文件導入numpy np.loadtxt(filename, delimiter = ',')時,出現錯誤。一旦我刪除了少於4列的行(在這種情況下前2行和後3行),導入工作正常。 兩個問題: 1.爲什麼通常不導入工作。我不確定這次導入的確切錯誤是什麼。換句話說,爲什麼在所有行中沒有相同數量的列是一個問題? 2.作爲一種變通方法,我知道如何忽略前兩行,同時導入具有numpy的np.loadtxt(filename, skiprows= 2)文件,但有一個簡單的方法,在底部也選擇行固定數量的忽視?

注:這是不是在numpy的陣列發現唯一行。其更多的是關於導入每行包含的列數不均勻的csv數據。

+0

的可能的複製[查找numpy.array唯一行(http://stackoverflow.com/questions/16970982/find-unique-rows-in-numpy-array) –

+0

@JosephFarah這不是在numpy數組中尋找唯一的行。這是關於導入具有非統一結構(行,列)的csv文件。我現在甚至無法創建numpy數組。 – deserthiker

回答

1

你的問題是相似的(一式兩份)到Using genfromtxt to import csv data with missing values in numpy

1)我不知道爲什麼這是默認的行爲。

  • 可能會警告用戶CSV文件可能已損壞。
  • 可能是優化陣列並使其N×M個,代替具有多個柱的長度。

2)使用numpy的的genfromtext。爲此,您需要提前知道正確的列數。

data = numpy.genfromtxt('data.csv', delimiter=',', usecols=[0,1,2,3], invalid_raise=False) 

希望這有助於!

+0

這仍然給我一個錯誤:'ValueError:檢測到一些錯誤! 3號線(有4個而不是3個) 4號線(有4個而不是3個)......'上面的工作方法。 – deserthiker

+0

現在試試吧,我忘了將invalid_raise設置爲False! – rafaelvalle

+0

不行仍然不工作@rafaelvalle。仍然得到'ValueError:檢測到一些錯誤! 線路#3(有4列,而不是3) 線#4在最後(有4列,而不是3).....'有趣的是我得到:'[[8 0 4091.] [ 8. 0. nan] [8.0 0.4091] [8.0。nan]] (4,3)' – deserthiker

1

您可以使用genfromtxt,它允許跳過線開始底:

np.genfromtxt('array.txt', delimiter=',', skip_header=2, skip_footer=3)