我在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有一个模块可以使用列压缩的稀疏矩阵进行操作,但它没有从文件创建一个模块的功能。
答案 0 :(得分: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
格式的用例。