Il modo migliore per trasporre una griglia di dati in un file
-
21-09-2019 - |
Domanda
Non ho grandi file di dati di valori su una griglia 2D. Essi sono organizzate in modo tale che le successive righe di dati nella griglia sono linee successive nel file. Ogni colonna è separato da un carattere di tabulazione. In sostanza, si tratta di un file CSV, ma con le schede al posto delle colonne.
Ho bisogno della trasposizione dei dati (prima riga diventa la prima colonna) e in uscita a un altro file. Qual'è il miglior modo per farlo? Ogni lingua è ok (io preferisco usare Perl o C / C ++). Attualmente, ho script Perl basta leggere l'intero file in memoria, ma non ho i file che sono semplicemente gigantesco.
Soluzione
Il modo più semplice sarebbe quella di fare più passaggi attraverso il vostro ingresso, l'estrazione di un sottoinsieme di colonne su ogni passaggio. Il numero di colonne sarebbe determinato da quanta memoria si voleva utilizzare e il numero di righe nel file di input.
Ad esempio:
Al passaggio 1 si legge l'intero file di input e di processo solo i primi, diciamo, 10 colonne. Se l'ingresso ha avuto 1 milione di righe, l'output sarà un file con 1 milione di colonne e 10 righe. Sul prossimo passaggio si dovrebbe leggere l'input di nuovo, e le colonne di processo 11-20, aggiungendo i risultati nel file di output originale. E così via ....
Altri suggerimenti
Se avete Python con installato NumPy, è facile come questo:
#!/usr/bin/env python
import numpy, csv
with open('/path/to/data.csv', 'rb') as file:
csvdata = csv.reader()
data = numpy.array(csvdata)
transpose = data.T
... il modulo csv
fa parte della libreria standard di Python.