Python 如何在SciPy中加速稀疏矩阵运算?

Python 如何在SciPy中加速稀疏矩阵运算?,python,numpy,matrix,scipy,Python,Numpy,Matrix,Scipy,我使用的矩阵是BSR稀疏矩阵。我需要执行BSR格式的矩阵乘法,并将其添加到密集矩阵中。我想知道有没有更快的方法 我在课堂上做这件事。守则的有关部分如下: import numpy as np from scipy import sparse Ts = np.zeros((self.Ks*self.D,self.Ks*self.D),dtype="float32") n = data.shape[0] for i in range(n): B = self.W[i]

我使用的矩阵是BSR稀疏矩阵。我需要执行BSR格式的矩阵乘法,并将其添加到密集矩阵中。我想知道有没有更快的方法

我在课堂上做这件事。守则的有关部分如下:

import numpy as np
from scipy import sparse

Ts = np.zeros((self.Ks*self.D,self.Ks*self.D),dtype="float32")
n = data.shape[0]
for i in range(n):
    B = self.W[i]  # a CSC sparse matrix
    x = self.train_data[i]
    s0 = B.T.dot(x)
    s0 = s0.reshape(self.D*self.Ks,1) 
    s0 = sparse.bsr_matrix(s0,blocksize=(self.Ds,1))
    Ts += (self.eta-1)*s0@s0.T + B.T@B  # This line cost most time

提前感谢您的帮助/建议。

您没有告诉我们任何有关形状和稀疏性的信息。注意每行的对象类型和形状可能有助于理解代码。但是
Ts
密集的事实表明它们没有那么大。使用密集数组而不是稀疏矩阵应该更快(除非矩阵是真正稀疏的)。