【问题标题】:How do I, within python, retrieve a sparse matrix stored by julia in a .jld file?如何在 python 中检索由 julia 存储在 .jld 文件中的稀疏矩阵?
【发布时间】:2016-02-22 01:35:14
【问题描述】:

使用 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 文件中取出稀疏矩阵呢?

【问题讨论】:

    标签: python python-2.7 julia hdf5


    【解决方案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()
    

    【讨论】:

    • 看起来 julia 正在遵循 matlab 练习。 Scipy 的格式更稀疏。
    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 2015-09-01
    • 1970-01-01
    • 2023-03-16
    • 2019-03-12
    • 2011-03-29
    • 1970-01-01
    • 2017-12-16
    相关资源
    最近更新 更多