Я новичок в python, пришедший из matlab.У меня есть большая разреженная матрица, сохраненная в формате Matlab v7.3 (HDF5).До сих пор я нашел два способа загрузки в файл, используя h5py
и tables
.Однако работа с матрицей, кажется, очень медленная после того, как.Например, в matlab:
>> whos
Name Size Bytes Class Attributes
M 11337x133338 77124408 double sparse
>> tic, sum(M(:)); toc
Elapsed time is 0.086233 seconds.
Использование таблиц:
t = time.time()
sum(f.root.M.data)
elapsed = time.time() - t
print elapsed
35.929461956
Использование h5py:
t = time.time()
sum(f["M"]["data"])
elapsed = time.time() - t
print elapsed
(я перестал ждать ...)
[EDIT]
Основываясь на комментариях @bpgergo, я должен добавить, что я пытался преобразовать результат, загруженный с помощью h5py
(f
), в массив numpy
илиscipy
разреженный массив двумя следующими способами:
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))
, но обе эти операции также чрезвычайно медленны.
Есть ли что-то, чего мне здесь не хватает?