首页 文章

NumPy:将稀疏矩阵从R导入Python

提问于
浏览
1

我在R中有一个非常大且稀疏的矩阵,使用'Matrix'包创建,我想在python numpy中处理 . R对象是csc格式,如果我使用Matrix包中的函数writeMM导出它,输出看起来像这样:

%%MatrixMarket matrix coordinate real general
4589 17366 160441
22 1 5.954510725783322
36 1 29.77255362891661
41 1 23.81804290313329
74 1 5.954510725783322
116 1 59.54510725783322
127 1 11.909021451566645
159 1 17.863532177349967

第一列是行,第二列是列,第三列是值 .

我想知道如何将其导入到python中 . 我看到scipy有一个模块可以使用列压缩的稀疏矩阵进行操作,但它没有从文件创建一个模块的功能 .

1 回答

  • 4

    您可以使用scipy.io.mmread,它完全符合您的要求 .

    In [11]: mmread("sparse_from_file")
    Out[11]: 
    <4589x17366 sparse matrix of type '<class 'numpy.float64'>'
        with 7 stored elements in COOrdinate format>
    

    注意结果是COO稀疏矩阵 . 如果你想要一个 csc_matrix ,你可以使用 sparse.coo_matrix.tocsc .

    现在你提到你想用numpy来处理这个非常大且稀疏的矩阵 . 这可能会变得不切实际,因为numpy仅在密集阵列上运行,如果你的矩阵确实非常庞大且稀疏,你可能无法以密集格式存储它 .

    因此,您可以更好地坚持使用最有效的 scipy.sparse 格式的用例 .

相关问题