Python 将稀疏矩阵与稀疏向量相乘(有效方法)

Python 将稀疏矩阵与稀疏向量相乘(有效方法),python,matrix,vector,sparse-matrix,matrix-multiplication,Python,Matrix,Vector,Sparse Matrix,Matrix Multiplication,我有一个大小为N*N的稀疏矩阵M,具有Nd非零元素,以及大小为N*1的稀疏向量a,具有Na非零元素。(N是大的) 我想计算矩阵乘法B=MA 我在scipy.sparse中使用稀疏矩阵表示P=csr\u矩阵(M)。然后我做B=P.dot(A) 我知道这个操作的复杂性是O(Nd)。在计算中,A似乎被视为稠密向量。因为当我改变数值Na时,这个乘法的计算时间不会改变。但是向量A也是稀疏的。有没有什么有效的方法可以用更少的计算时间来执行乘法 在我的模拟中,M是固定的。向量A是不同的,但它们都是稀疏的 非

我有一个大小为N*N的稀疏矩阵M,具有Nd非零元素,以及大小为N*1的稀疏向量a,具有Na非零元素。(N是大的) 我想计算矩阵乘法B=MA


我在scipy.sparse中使用稀疏矩阵表示P=csr\u矩阵(M)。然后我做B=P.dot(A)

我知道这个操作的复杂性是O(Nd)。在计算中,A似乎被视为稠密向量。因为当我改变数值Na时,这个乘法的计算时间不会改变。但是向量A也是稀疏的。有没有什么有效的方法可以用更少的计算时间来执行乘法

在我的模拟中,M是固定的。向量A是不同的,但它们都是稀疏的


非常感谢。

“在我的模拟中,M是固定的。向量A是不同的,但它们都是稀疏的。”-将A矩阵叠加到一个稀疏矩阵中,然后执行一个稀疏矩阵乘法。事实上,向量A2基于MA1的结果。我不知道所有的A在同一时间。它是一步一步计算出来的。只是想弄清楚,
A
也是一个
csr\u矩阵
?有一些不同乘法方法的计时。“在我的模拟中,M是固定的。向量A是不同的,但它们都是稀疏的。”-将A矩阵叠加到一个稀疏矩阵中,然后执行一个稀疏矩阵乘法。事实上,向量A2基于MA1的结果。我不知道所有的A在同一时间。它是一步一步计算出来的。只是想弄清楚,
A
也是一个
csr\u矩阵
?有一些不同乘法方法的计时。