Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как мне в python получить разреженную матрицу, хранящуюся julia в файле .jld?

Автор вопроса: AsmusОтветов: 1

Используя julia, я могу сохранить разреженную матрицу в файле .jld (который использует формат HDF5) следующим образом:

a=spzeros(3,3);
a[1,1]=2.0
a[2,1]=1.0
a[3,1]=5
@save("sparsematrix.jld",a)

Теперь я хочу получить эту матрицу в python (используя h5py), поэтому я попробовал следующее:

import h5py
filename="sparsematrix.jld"
f = h5py.File(filename, 'r')
data= f["a"][()]
f.close()

Печать data вернет (3, 3, <HDF5 object reference>, <HDF5 object reference>, <HDF5 object reference>), поэтому я попытался получить доступ к ссылкам на объекты с помощью: f[data[2]], который возвращает <HDF5 dataset "00000001": shape (4,), type "<i8">, но теперь я застрял.

Итак, как мне получить разреженную матрицу из файла .jld?

pythonjuliahdf5

Ответы

Ответ 1 · рейтинг 1 · Asmus

Хорошо, нашел сам, поразмыслив над форматом CSC:

import h5py
from scipy.sparse import csc_matrix

filename="sparsematrix.jld"
f = h5py.File(filename, 'r')
data= f["a"][()]

column_ptr=f[data[2]][:]-1 ## correct indexing from julia (starts at 1)
indices=f[data[3]][:]-1 ## correct indexing
values =f[data[4]][:]
csc_matrix((values,indices,column_ptr), shape=(data[0],data[1])).toarray()

f.close()

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы