Cargando la matriz dispersa de Matlab guardada con -v7.3 (HDF5) en Python y operando en ella
Soy nuevo en Python, viniendo de Matlab. Tengo una gran matriz dispersa guardada en formato matlab v7.3 (HDF5). Hasta ahora he encontrado dos formas de cargar el archivo, usandoh5py
ytables
. Sin embargo, operar en la matriz parece ser extremadamente lento después de cualquiera. Por ejemplo, en matlab:
>> whos
Name Size Bytes Class Attributes
M 11337x133338 77124408 double sparse
>> tic, sum(M(:)); toc
Elapsed time is 0.086233 seconds.
Utilizando tablas:
t = time.time()
sum(f.root.M.data)
elapsed = time.time() - t
print elapsed
35.929461956
Utilizando h5py:
t = time.time()
sum(f["M"]["data"])
elapsed = time.time() - t
print elapsed
(Dejé de esperar ...)
[EDITAR
Basado en los comentarios de @bpgergo, debo agregar que he intentado convertir el resultado cargado porh5py
(f
) en unnumpy
matriz o unascipy
matriz dispersa de las siguientes dos formas:
from scipy import sparse
A = sparse.csc_matrix((f["M"]["data"], f["M"]["ir"], f["tfidf"]["jc"]))
data = numpy.asarray(f["M"]["data"])
ir = numpy.asarray(f["M"]["ir"])
jc = numpy.asarray(f["M"]["jc"])
A = sparse.coo_matrix(data, (ir, jc))
pero ambas operaciones son extremadamente lentas también.
¿Hay algo que me falta aquí?