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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top