python 矩形矩阵的稀疏矩阵矩阵乘法

sparse matrix matrix multiplication in python for rectangular matrices

我在 python 中使用大小为 n x m 的稀疏矩阵 A。 我正在使用 scipy 中的 csr_matrix 格式,并将矩阵包装为线性运算符,因此我可以使用 slinalg 包。

我需要计算 A^T*A 乘积。但是,我无法找到合适的例程来实现这一目标。 我可以使用 linearoperator 的 matmat 函数,但这需要我将矩阵转换为密集格式。

有什么方法可以在 python 中将两个稀疏矩阵相乘(即使使用不同的包)而不转换为密集矩阵?我的矩阵很大,由于内存要求,转换会导致崩溃。

SciPy 有非常有效的 built-in 矩阵乘法 'sparse csr_matrix ' 而不是将其转换为密集矩阵。

您可以直接使用以下:

import scipy

data, row, column = ...
A = scipy.sparse.csr_matrix((data, (row, column)), shape = (...))

matmul = A.T*A