Qual è il miglior formato di file per memorizzare una matrice non compresso 2D?

datascience.stackexchange https://datascience.stackexchange.com/questions/9877

  •  16-10-2019
  •  | 
  •  

Domanda

Per quello che vale il mio caso particolare di è una matrice simmetrica, ma la questione dovrebbe essere risolta più in generale.

È stato utile?

Soluzione

Il formato più compatibile è sicuramente CSV / TSV. E 'il testo e di solito si può Gzip al volo con il pacchetto software che si sta utilizzando. Non esiste un formato standardizzato ampiamente per la memorizzazione di dati di matrice matrice. Matlab ha i suoi file * .mat, NumPy ha * .npz, Stata e SAS hanno un proprio, ... Best basta usare un file di testo in chiaro.

Se la matrice è simmetrica, se è molto grande o se ci sarà un sacco di loro, si può risparmiare il 50% nel requisito di spazio memorizzando solo (o superiore) parte triangolare inferiore di esso. Se si è scelto di farlo, non v'è, ancora una volta, il formato non ampiamente accettata. Basta conservare la forma e poi il appiattita, i dati 1D.

Altri suggerimenti

vorrei andare con .csv come è universalmente accettato e può essere letto in diversi linguaggi di programmazione facilmente. Inoltre si può semplicemente aprire con un software per ufficio. Se si utilizza il matrice solo in Python Raccomando anche Pickle biblioteca che scrive vostra matrice in un < em> .p formato e può essere facilmente letta in pitone con una semplice funzione di carico.

carrello di alimentazione di ritorno / riga (CR / LF) potrebbe causare problemi a seconda del sistema , suggerisco di memorizzare la matrice "inline" o in raster in stile con una breve intestazione per specificare la vostra convention, un numero delle versioni (si potrebbe cambiare idea in seguito, e aumentare la versione), ecc e almeno la dimensione della matrice, e il resto in un formato di testo (CSV, TSV). Questo è simile a ciò che viene fatto a immagine bitmap mappa o in formato grigio portatile .

Ho usato che per il testo negozio coefficienti filtro bancari .

Un esempio potrebbe essere minima: 2,3,0.1,1.2,2.3,3.4,4.5,5.6 per il $ matrice di $ 2 \ 3 volte: \ Begin {array} 0.1 & 1.2 & 2.3 \\ 3.4 & 4.5 & 5.6 \ End {array} ma è possibile utilizzare per esempio #2,#3,0.1,1.2,2.3,3.4,4.5,5.6 in modo che gli alieni (pensare al oro Pioneer placca ) capire che i primi due numeri interi sono "diversi" e fornire suggerimenti su come i seguenti numeri dovrebbero essere lette. Con una matrice quadrata (tipico delle matrici simmetriche), questo è ancora più interessante, poiché è necessario un solo numero intestazione #n (lateralmente) ei lettori acuti vedrà che i numeri rimanenti sono in $ n ^ 2 $ quantità.

Si può anche avere uno sguardo in altri schemi Matrix Storage , e se tua matrice è scarsa, Compressed Row Storage (CRS) .

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