Este equipo de expertos despúes de algunos días de investigación y de juntar de información, hemos dado con la solución, nuestro deseo es que te sea de utilidad en tu proyecto.
Solución:
La documentación es engañosa aquí. Por un lado, la única opción de exportación es "Append"
que se puede encontrar bajo el Opciones pestaña. Por otro lado, la documentación general dice
Realmente me pregunto, ¿por qué es necesario poner Importar solo detrás de un valor de opción cuando "DataEncoding"
no es una opción de exportación en absoluto.
De todos modos, tengo el mismo comportamiento en MacOSX que tú: Sin compresión de datos. Aunque, usando
ExportString[1, 2, 3, 4, "HDF5", "DataEncoding" -> "GZIP"]
y cambiando "GZIP"
a None
cambia algo en la salida, pero no comprime el array.
solución parcial
Una posible solución es comprimir con gzip los archivos “HDF5”. Esto parece ser reconocido por Matemática automáticamente. Entonces, o comprima manualmente los archivos con gzip, o use algo similar para hacer todo en Matemática
Export["matrix.h5.gz", ExportString[datapourrie, "HDF5"], "GZIP"]
Para sus datos de prueba, esto se ejecuta en poco tiempo, todo lo demás probablemente necesite una evaluación comparativa y ajustes. Para volver a importar sus datos, simplemente puede hacer
Import["matrix.h5.gz", "HDF5", "Datasets", "/Dataset1"]
Una solución es comprimir el archivo HDF5 después ha sido exportado desde Mathematica, utilizando las herramientas de línea de comandos HDF5.
Nota: en OS X, las herramientas de línea de comandos se pueden instalar fácilmente usando MacPorts usando port install h5utils
.
El comando para recomprimir los datos es
h5repack -v -f GZIP=1 infile.h5 outfile.h5
De hecho, esto puede lograr una reducción significativa en el tamaño.
Para mayor comodidad, es posible que desee invocar esto desde Mathematica usando Run
.
En la versión 7, el método de exportación de halirutan no produce un archivo que sea reconocido por Import
.
Sin embargo, se puede escribir:
Export["matrix2.h5.gz", datapourrie, "GZIP", "HDF5"]
Y luego:
d2 = Import["matrix2.h5.gz", "Datasets", "/Dataset1"];
datapourrie == d2
Cierto
Recuerda dar visibilidad a este post si te fue útil.