【问题标题】:sparse matrix matrix multiplication in python for rectangular matrices [closed]python中用于矩形矩阵的稀疏矩阵矩阵乘法[关闭]
【发布时间】:2020-12-05 17:59:20
【问题描述】:

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

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

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

【问题讨论】:

  • 您的*T 是另一个重复或转置吗? `稀疏有transpise,还有矩阵乘法。不要只浏览它的文档。
  • 关闭原因错误。这不是一个开放式的推荐问题。 “即使有不同的包装”短语是括号内的。矩阵乘法内置在他正在使用的稀疏包中。

标签: python numpy scipy sparse-matrix matrix-multiplication


【解决方案1】:

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

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

import scipy

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

matmul = A.T*A

【讨论】:

  • 谢谢!出于某种原因,我知道这是逐点垫子乘法,而不是标准垫子乘法
  • A.multiply(A) 是逐点乘法。 *@dot 都做矩阵乘法。 * 是密集的ndarray 的逐点,但这是一个不同的类(更多地以np.matrix 类为模型)。
猜你喜欢
  • 1970-01-01
  • 2011-11-20
  • 2014-03-06
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
相关资源
最近更新 更多