Numpy 如何用python的Spars方法将两个稀疏矩阵相乘?

Numpy 如何用python的Spars方法将两个稀疏矩阵相乘?,numpy,sparse-matrix,matrix-multiplication,numpy-ndarray,python-3.8,Numpy,Sparse Matrix,Matrix Multiplication,Numpy Ndarray,Python 3.8,我尝试将两个稀疏矩阵相乘,但在删除全部为零的额外行时遇到问题,我使用了numpy.delete(my_matrix[n],axis=0),并得到以下错误: 索引4超出大小为3的轴0的界限 def mult_mat(mat1, mat2): col = mat1[0][1] row = mat2[0][0] row_mat1, row_mat2 = np.shape(mat1)[0], np.shape(mat2)[0] if col != row: return "Multip

我尝试将两个稀疏矩阵相乘,但在删除全部为零的额外行时遇到问题,我使用了
numpy.delete(my_matrix[n],axis=0)
,并得到以下错误:

索引4超出大小为3的轴0的界限

def mult_mat(mat1, mat2):
col = mat1[0][1]
row = mat2[0][0]
row_mat1, row_mat2 = np.shape(mat1)[0], np.shape(mat2)[0]
if col != row:
    return "Multiplication is not possible because the number" \
           " of columns in the first matrix is opposite of the" \
           " number of rows in the second matrix"
my_matrix = np.array([[0] * 3] * (mat1[0][2] * mat2[0][2]))
n = 0
for r in range(1, row_mat1):
    for h in range(1, row_mat2):
        if mat1[r][1] == mat2[h][0]:
            my_matrix[n][0], my_matrix[n][1], my_matrix[n][2] = mat1[r][0], mat2[h][1], mat1[r][2] * mat2[h][2]
            n += 1
row_my_matrix = np.shape(my_matrix)[0]
for n in range(row_my_matrix):
    if my_matrix[n][0] == 0 & my_matrix[n][1] == 0 & my_matrix[n][2] == 0:
        my_matrix = np.delete(my_matrix, [n], axis=0)
return my_matrix

只需使用基本的调试方法。找出一组问题行,并找出纠正方法。请记住,删除行时,数组会收缩,有效索引也会更改。也可以考虑找到要删除的行,但是只做一次实际的删除。从
[0,1,1,0,1]中删除0