我在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 回答
您可以使用scipy.io.mmread,它完全符合您的要求 .
注意结果是COO稀疏矩阵 . 如果你想要一个
csc_matrix
,你可以使用sparse.coo_matrix.tocsc
.现在你提到你想用numpy来处理这个非常大且稀疏的矩阵 . 这可能会变得不切实际,因为numpy仅在密集阵列上运行,如果你的矩阵确实非常庞大且稀疏,你可能无法以密集格式存储它 .
因此,您可以更好地坚持使用最有效的
scipy.sparse
格式的用例 .