2012-04-23 29 views

Respuesta

34

h5py ya lee archivos en matrices como numpy, por lo que sólo:

with h5py.File('the_filename', 'r') as f: 
    my_array = f['array_name'][()] 

El [()] significa para leer toda la matriz en; si no lo haces, no lee toda la información, sino que te da acceso perezoso a las subpartes (muy útil cuando la matriz es enorme pero solo necesitas una pequeña parte de ella).

+0

Muchas gracias Dougal.He modificado el código para: >>> f = h5py.File ('D: /! JODI/Macau Wind/u_100m/20100101.hdf5', 'r') my_array = f [ 'u']. valor f.close() Otra pregunta estúpida es que la putarray está en un archivo? ¿Dónde puedo encontrar la matriz de salida? muchas gracias –

+0

No estoy seguro de lo que quiere decir con la matriz de salida: 'my_array' desde arriba? Cualquier cambio que realice solo se almacenará en la memoria a menos que los guarde usted mismo (en un 'h5py.File' o con algo como' numpy.save'). – Dougal

+4

Para la posteridad: el método '.value' ya no funciona. Use 'f ['array_name'] [()]' en su lugar. – Dougal

0

Para esta pregunta es demasiado exagerado, pero si tienes muchas cosas como esta para hacer, utilizo un paquete SpacePy que hace que esto sea más fácil.

datamodel.fromHDF5() documentación Esto devuelve un diccionario de matrices almacenadas de forma similar a como h5py maneja los datos.

Cuestiones relacionadas