问题描述
我正在使用大小为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