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

NumPy: Importing a Sparse Matrix from R into Python

我在 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 有一个模块可以处理列压缩稀疏矩阵,但它没有从文件创建稀疏矩阵的功能。

您可以使用 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 格式。