Ho un file csv
con le intestazioni come:carico NumPy e le colonne di accesso per nome
Dato questo test.csv
di file:
"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
Voglio semplicemente caricarlo come una matrice/ndarray con 3 righe e 7 colonne e inoltre desidero accedere allo column vectors
da un dato column name
. Se uso genfromtxt
(come mostrato di seguito) ottengo un narray con 3 righe (una per riga) e nessuna colonna.
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,)
posso ottenere vettori colonna di nomi di colonna simili:
print r['A']
[ 611.88243 611.88243 611.88243]
Se, uso load.txt
allora ottengo la matrice con 3 righe e 7 colonne ma non può accedere columns
base alle column
nomi (come mostrato di seguito).
numpy.loadtxt(open("test.csv","rb"),delimiter=",",skiprows=1)
ottengo
[ [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] ]
Esiste un approccio Python
che posso raggiungere entrambi i requisiti insieme (access columns by coluumn name like np.genfromtext and have a matrix like np.loadtxt
)?
voglio una matrice NumPy (che sarà usato per la manipolazione della matrice futher) non array. – user2481422
Le matrici di Numpy non hanno colonne accessibili dalle etichette. – unutbu
Mi sto chiedendo l'efficienza temporale in questo caso. Inizialmente, ho pensato di caricare il file 'csv' in entrambi i file' loadtxt' e 'genfromtext' e accedere sia ai nomi di array che di colonne numpy, ma questo richiede troppo tempo. Sembra che anche questa soluzione sia simile, appena genfromtext viene sostituito con csv.reader (con più righe di codice). Il mio file csv è di 5 MB, quindi volevo una libreria che potesse fare entrambe le cose contemporaneamente. – user2481422