通勤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)
有效,如果您的情况可能的话。另外,请注意。是的,我知道这些属性。我担心的是,将一个列顺序稀疏矩阵来回变换会把事情搞得一团糟。。。