Scipy稀疏矩阵乘法

时间:2017-03-01 17:13:31

标签: python numpy matrix scipy sparse-matrix

我有使用numpy数组的矩阵乘法矩阵的例子:

import numpy as np
m = np.array([[1,2,3],[4,5,6],[7,8,9]])
c = np.array([0,1,2])
m * c
array([[ 0,  2,  6],
       [ 0,  5, 12],
       [ 0,  8, 18]])

如果m是scipy稀疏CSR矩阵,我怎么能做同样的事情?这会导致尺寸不匹配:

sp.sparse.csr_matrix(m)*sp.sparse.csr_matrix(c)

2 个答案:

答案 0 :(得分:10)

您可以调用multiply的{​​{1}}方法进行逐点乘法。

csr_matrix

答案 1 :(得分:0)

mc为numpy数组时,m * c不是“矩阵乘法”。如果你认为那么你可能犯了一个错误。要获得矩阵乘法,请使用矩阵类,如numpy的matrix或scipy.sparse矩阵类。

您遇到失败的原因是从矩阵的角度来看c是1x3矩阵:

c = np.matrix([0, 1, 2]) 
c.shape    # (1,3)

c = sp.csc_matrix([0, 1, 2])
c.shape    # (1,3)

如果你想要的是与c的矩阵乘法,那么你需要使用转置。

c = np.matrix([0, 1, 2]).transpose()
c.shape    # (3,1)

m = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
m.shape    # (3,3)

m * c
# matrix([[ 8],
#         [17],
#         [26]])