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

问题描述

我正在使用大小为n x m的稀疏矩阵A的python。 我正在使用来自scipy的csr_matrix格式,并将矩阵包装为linearoperator,因此可以使用slinalg程序包​​。

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

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

解决方法

SciPy具有非常有效的内置方法,可用于' sparse csr_matrix '的矩阵乘法,而无需将其转换为密集矩阵。

您可以直接使用以下内容:

import scipy

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

matmul = A.T*A