Загрузка разреженной матрицы Matlab, сохраненной с помощью -v7.3 (HDF5), в Python и работа с ней

Я новичок в python, пришедший из Matlab. У меня есть большая разреженная матрица, сохраненная в формате Matlab v7.3 (HDF5). Пока что я нашел два способа загрузки в файл, используя таблицы h5py и . Однако и после этого работа с матрицей кажется очень медленной. Например, в 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))

, но обе эти операции также очень медленные.

Что-то мне здесь не хватает?

5
задан tdc 8 December 2011 в 17:02
поделиться