2017-04-11 474 views
0

例如,我有csv文件包含十列。是否有可能將其讀入兩個變量 - 第一個將包含1-2..9列,第二個將包含最後一列,通過loadtxtgenfromtxt通過numpy讀取csv數據

+2

你可以將它讀入一個大數組'a'(非常容易使用'loadtxt'),然後查看兩個不同的切片,即'a1 = a [:,:-1]'和'a2 = a [:, [-1]] ' – jez

+0

你看了看進口csv模塊嗎? 這個答案應該完成工作:http://stackoverflow.com/questions/24662571/python-import-csv-to-list –

+0

@ Z.Bagley是的,但是這個是一個'numpy'問題,它已經具有將csvs直接加載到'numpy'數據結構的功能。在'csv'中使用'csv'這種情況是不必要的中間人。 –

回答

1
a = numpy.loadtxt('blah.csv', delimiter=',') # loads it all into one big array 
a1 = a[:, :-1] # a view of all but the last column 
a2 = a[:, [-1]] # a copy of just the last column 

(或者,如果你希望你的最後一列變量是一維的,你可以得到它使用a[:,-1]與其說a[:, [-1]]的看法。)

+0

不幸的是,我不相信'a [:, [-1]]'是一個視圖,而是一個副本。 –

+0

@ juanpa.arrivillaga好點 – jez

+0

是的,可能你不想看到反正。 –

0
numpy.loadtext('filename.csv', usecols(0,1,2,...,n-2)) 
numpy.loadtext('filename.csv', usecols = n-1) 

注:指數你的列應該減1,因爲numpy會在加載時從0開始。

從文檔https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html

usecols:int或序列,可選 哪些列讀取,其中0是第一個。例如,usecols =(1,4,5)將提取第2列,第5列和第6列。默認,無,>讀取中的所有列的結果。」