【问题标题】:Commute numpy sparse matrix dot product通勤 numpy 稀疏矩阵点积
【发布时间】:2013-11-10 00:48:56
【问题描述】:

据我了解,numpy.sparse.csr_sparse.dot(other) 确实将other 与我的稀疏矩阵相乘从右侧

A = numpy.sparse.csr_sparse(something)
B = numpy.matrix(something)
C = A.dot(B)                     # C = A*B

如何将这两个矩阵换算得到B*A,而不会失去将矩阵保存为稀疏矩阵的好处(即.todense() 等)?

【问题讨论】:

  • 有什么理由不能将B 也保存为稀疏矩阵吗?尝试sparse.csr_matrix.dot(B, A) 表示第一个参数必须是稀疏的,但sparse.csr_matrix.dot(sparse.csr_matrix(B), A) 有效,如果您的情况可能的话。
  • 另外,请注意this danger

标签: numpy matrix sparse-matrix


【解决方案1】:

矩阵乘法属性的一点复习:

D = B * A
D.T = A.T * B.T
D = (A.T * B.T).T

这导致了明显的:

D = A.T.dot(B.T).T

请注意,CSR 和 CSC 矩阵的转置非常快,因为它只是改变形状和类型(从 CSR 到 CSC,或从 CSC 到 CSR),而内部数据保持不变。

【讨论】:

  • 是的,我知道这些属性。我担心来回转置列序稀疏矩阵会搞得一团糟……
猜你喜欢
  • 2017-07-20
  • 2016-08-15
  • 2012-11-06
  • 1970-01-01
  • 2012-12-20
  • 2021-11-25
  • 2019-10-22
  • 1970-01-01
  • 2015-09-11
相关资源
最近更新 更多