Ich habe eine csv
Datei mit Header wie:Last CSV-Datei numpy und Zugang Spalten mit Namen
Vor dieser test.csv
Datei:
"A","B","C","D","E","F","timestamp"
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12
Ich möchte es einfach als eine Matrix/ndarray laden mit 3 Zeilen und 7 Spalten und ich möchte auch auf die column vectors
von einem gegebenen column name
zugreifen. Wenn ich genfromtxt
benutze (wie unten gezeigt), bekomme ich ein ndarray mit 3 Zeilen (eine pro Zeile) und keine Spalten.
r = np.genfromtxt('test.csv',delimiter=',',dtype=None, names=True)
print r
print r.shape
[ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0)
(611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0)
(611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)]
(3,)
Ich kann Spaltenvektoren von Spaltennamen wie diese:
print r['A']
[ 611.88243 611.88243 611.88243]
Wenn ich load.txt
dann bekomme ich das Array mit drei Zeilen und 7 Spalten aber columns
nicht unter Verwendung der column
Namen zugreifen kann (wie unten gezeigt).
numpy.loadtxt(open("test.csv","rb"),delimiter=",",skiprows=1)
ich
[ [611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12]
[611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12]
[611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12] ]
Gibt es einen Ansatz in Python
, dass ich beide zusammen die Anforderungen erreichen können (access columns by coluumn name like np.genfromtext and have a matrix like np.loadtxt
)?
Ich möchte ein numpy Matrix (das wird verwendet für weitere Matrixmanipulation) nicht Array. – user2481422
Numpy-Matrizen verfügen nicht über Spalten, auf die durch Labels zugegriffen werden kann. – unutbu
Ich frage mich die Zeiteffizienz in diesem Fall. Zuerst dachte ich daran, die 'csv'-Datei in' loadtxt' und 'genfromtext' zu laden und sowohl auf numpy Array- als auch auf Spaltennamen zuzugreifen, aber das dauert zu lange. Es scheint, dass diese Lösung auch nur genffromtext mit csv.reader (mit mehr Zeilen Code) ersetzt wird. Meine csv-Datei hat 5 MB, also wollte ich eine Bibliothek, die beides gleichzeitig kann. – user2481422