2017-04-11 4 views
0

Zum Beispiel habe ich csv Datei enthält zehn Spalten. Ist es möglich, es in zwei Variablen zu lesen - die erste wird 1-2..9 Spalten enthalten und die zweite wird die letzte Spalte mittels loadtxt oder genfromtxt enthalten?Lesen Sie CSV-Daten von numpy

+2

Sie könnten lese es in ein großes Array 'a' (sehr einfach mit' loadtxt') und betrachte dann zwei verschiedene Slices, 'a1 = a [:,: -1]' und 'a2 = a [:, [-1]] ' – jez

+0

Haben Sie in das Import-CSV-Modul untersucht? Diese Antwort sollte den Job erledigt bekommen: http://stackoverflow.com/questions/24662571/python-import-csv-to-list –

+0

@ Z.Bagley ja, aber das ist eine 'numpy' Frage, die bereits Funktionen hat, um csvs direkt in' numpy' Datenstrukturen zu laden. Mit 'csv' in Dieser Fall ist ein unnötiger Zwischenhändler. –

Antwort

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 

(Oder, wenn Sie Ihre letzten Spalte Variable wollen eindimensional sein, können Sie einen Blick auf bekommen es a[:,-1] anstelle a[:, [-1]] zu sagen.)

+0

Leider glaube ich nicht, dass ein [:, [-1]] eine Ansicht ist, sondern eine Kopie. –

+0

@ juanpa.arrivillaga guter Punkt – jez

+0

Ja, wahrscheinlich wollen Sie sowieso keine Aussicht. –

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

Hinweis: Der Index Ihrer Spalten sollte um 1 dekrementiert werden, da numpy beim Laden mit 0 beginnt.

Aus der Dokumentation https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html:

usecols: int oder Sequenz, optional Welche Spalten zu lesen, wobei 0 die erste. Zum Beispiel wird usecols = (1,4,5) die zweite, fünfte und sechste Spalte extrahieren. Der Standard, None,> Ergebnisse in allen Spalten gelesen werden.“