Puede haber una manera más sencilla, pero esta es la forma en que le van haciendo sobre él, por lo que yo sé:
import numpy as np
import tables
# Generate some data
x = np.random.random((100,100,100))
# Store "x" in a chunked array...
f = tables.openFile('test.hdf', 'w')
atom = tables.Atom.from_dtype(x.dtype)
ds = f.createCArray(f.root, 'somename', atom, x.shape)
ds[:] = x
f.close()
Si desea especificar la compresión de usar, echar un vistazo a tables.Filters
. P.ej.
import numpy as np
import tables
# Generate some data
x = np.random.random((100,100,100))
# Store "x" in a chunked array with level 5 BLOSC compression...
f = tables.openFile('test.hdf', 'w')
atom = tables.Atom.from_dtype(x.dtype)
filters = tables.Filters(complib='blosc', complevel=5)
ds = f.createCArray(f.root, 'somename', atom, x.shape, filters=filters)
ds[:] = x
f.close()
Probablemente hay una manera más sencilla para un montón de esto ... No he utilizado para otra cosa que pytables
datos de la tabla, como cualquier cosa en mucho tiempo.
Nota: con PyTables 3.0, f.createCArray
se renombró a f.create_carray
. También puede aceptar la matriz directamente, sin especificar el atom
,
f.create_carray('/', 'somename', obj=x, filters=filters)
Honestamente, si usted está almacenando una gran cantidad de sólo hacia arriba matrices ND, es mejor con 'h5py' en lugar de' pytables'. Es tan simple como 'f.create_dataset ('name', data = x)' donde 'x' es tu matriz numpy y' f' es el archivo hdf abierto. Hacer lo mismo en 'pytables' es posible, pero considerablemente más difícil. –
Joe, +1. Estaba a punto de publicar un comentario casi idéntico. –
Pensé en eso, pero Pytables tiene algunas características (tables.expr) para hacer cálculos directamente en las matrices, ¿puedo tener eso con h5py? – scripts