2010-03-03 23 views
14

Me pregunto si existe alguna forma de trabajar con archivos grandes en Mathematica. Actualmente tengo un archivo de aproximadamente 500 Mb con datos de tabla.Manera de manejar archivos de datos grandes en Wolfram Mathematica

Import["data.txt","Table"]; 

¿Qué es la manera alternativa?

+0

¿Qué pasa de esta manera? – kennytm

+0

toma demasiado tiempo cargar archivos grandes. y creo que también mucha memoria. –

+3

Se hizo nuevamente una pregunta similar aquí: http://stackoverflow.com/questions/7525782/import-big-files-arrays-with-mathematica. Di dos soluciones para tablas densas y dispersas, que las que vienen a esta página pueden ser útiles. Todavía son bastante lentos, pero mucho más eficientes en memoria que 'Importar '. –

Respuesta

13

Use OpenRead["file"], que le proporciona un objeto InputStream con el que puede usar Read[stream]. Según el formato del archivo de datos, es posible que deba establecer valores de opción personalizados en Read[] para RecordSeparators.

Ejemplo:

In[1]:= str = OpenRead["ExampleData/USConstitution.txt"]  
Out[1]= InputStream["ExampleData/USConstitution.txt", 24] 

In[2]:= Read[str, Word]  
Out[2]= "We"  
In[3]:= Read[str, Word] 
Out[3]= "the"  
In[4]:= Read[str, Record] 
Out[4]= "People of the United States, in Order to form a more perfect Union," 
+8

Debe recordar cerrar la secuencia cuando haya terminado. Además, si abortas la operación, la transmisión permanecerá abierta. Esto puede ocasionar sorpresas desagradables. Por lo tanto, recomiendo envolver su código de lectura en un 'CheckAbort' para capturar el aborto, y luego cerrar la transmisión independientemente de si la operación ha sido cancelada o no. – rcollyer

+0

¡Excelente punto! – Timo

4

También puede cargar sus datos en una base de datos (por ejemplo, MySQL) y acceder a ella desde Mathematica usando DatabaseLink

+0

¡gran consejo! Gracias –

1

La función DumpSave también puede ser útil para el ahorro de grandes conjuntos de datos. Guarda los datos en el formato interno de Mathematica, por lo que es más eficiente tanto en tiempo como en tamaño de archivo.

Cuestiones relacionadas