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
格式。
我在 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
格式。