with update open how create python arrays numpy h5py

python - update - install h5py with pip



Matrices numpy de entrada y salida a h5py (2)

h5py proporciona un modelo de conjuntos de datos y grupos . El primero es básicamente arreglos y el último se puede pensar en directorios. Cada uno es nombrado. Debería mirar la documentación para la API y ejemplos:

http://docs.h5py.org/en/latest/quick.html

Un ejemplo simple en el que está creando todos los datos por adelantado y solo quiere guardarlo en un archivo hdf5 sería algo así como:

In [1]: import numpy as np In [2]: import h5py In [3]: a = np.random.random(size=(100,20)) In [4]: h5f = h5py.File(''data.h5'', ''w'') In [5]: h5f.create_dataset(''dataset_1'', data=a) Out[5]: <HDF5 dataset "dataset_1": shape (100, 20), type "<f8"> In [6]: h5f.close()

Luego puede cargar esos datos usando: ''

In [10]: h5f = h5py.File(''data.h5'',''r'') In [11]: b = h5f[''dataset_1''][:] In [12]: h5f.close() In [13]: np.allclose(a,b) Out[13]: True

Definitivamente echa un vistazo a los documentos:

http://docs.h5py.org

Escribir en un archivo hdf5 depende de h5py o de las combinaciones (cada una tiene una API de Python diferente que se encuentra sobre la especificación del archivo hdf5). También debería echar un vistazo a otros formatos binarios simples proporcionados por numpy np.save como np.save , np.savez , etc.

http://docs.scipy.org/doc/numpy/reference/routines.io.html

Tengo un código de Python cuyo resultado es un matriz de tamaño, cuyas entradas son todas del tipo float . Si lo guardo con la extensión .dat el tamaño del archivo es del orden de 500 MB. Leí que usar h5py reduce considerablemente el tamaño del archivo. Entonces, digamos que tengo la matriz numpy 2D llamada A ¿Cómo lo guardo en un archivo h5py? Además, ¿cómo leo el mismo archivo y lo pongo como una matriz numpy en un código diferente, ya que necesito hacer manipulaciones con la matriz?


Una forma más limpia de manejar el archivo abierto / cerrado y evitar pérdidas de memoria:

Deberes:

import numpy as np import h5py data_to_write = np.random.random(size=(100,20)) # or some such

Escribir:

with h5py.File(''name-of-file.h5'', ''w'') as hf: hf.create_dataset("name-of-dataset", data=data_to_write)

Leer:

with h5py.File(''name-of-file.h5'', ''r'') as hf: data = hf[''name-of-dataset''][:]