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

时间:2015-07-23 19:52:24

标签: numpy matrix scipy sparse-matrix

我在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 个答案:

答案 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格式的用例。