2015-11-19 27 views
1

使用朱莉娅,我可以保存在一个文件.jld稀疏矩阵(它是使用HDF5格式),就像这样:我如何在python中检索由julia存储在.jld文件中的稀疏矩阵?

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

现在我想要检索(使用h5py)在python这个矩阵,所以我试过如下:

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文件中获取稀疏矩阵?

回答

1

好吧,发现它自己,包裹我的头周围的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() 
+0

看起来像茱莉亚以下Matlab实践。 Scipy有更稀疏的格式。 – hpaulj