通勤numpy稀疏矩阵点积

通勤numpy稀疏矩阵点积,numpy,matrix,sparse-matrix,Numpy,Matrix,Sparse Matrix,据我所知,numpy.sparse.csr\u sparse.dot(other)会从右侧将other乘以我的稀疏矩阵: A = numpy.sparse.csr_sparse(something) B = numpy.matrix(something) C = A.dot(B) # C = A*B 如何转换这两个矩阵以获得B*A,同时又不失去将矩阵保存为稀疏矩阵的好处(即.todense()等)?矩阵乘法属性的一点更新: D = B * A D.T =

据我所知,
numpy.sparse.csr\u sparse.dot(other)
会从右侧将
other
乘以我的稀疏矩阵

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

如何转换这两个矩阵以获得
B*A
,同时又不失去将矩阵保存为稀疏矩阵的好处(即
.todense()
等)?

矩阵乘法属性的一点更新:

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),使内部数据保持不变。

有什么原因不能将
B
保存为稀疏矩阵?尝试
sparse.csr\u matrix.dot(B,A)
表示第一个参数必须是稀疏的,但是
sparse.csr\u matrix.dot(sparse.csr\u matrix(B,A)
有效,如果您的情况可能的话。另外,请注意。是的,我知道这些属性。我担心的是,将一个列顺序稀疏矩阵来回变换会把事情搞得一团糟。。。