SciPy的稀疏矩阵和numpy的阵列之间的点积得到ValueError异常(Dot product

2019-10-29 01:37发布

我试图计算SciPy的解析矩阵和numpy的阵列之间的点积。

首先,我是使用numpy的矩阵,你可以在下面的代码中看到:

def power_iteration(matrix, n):
    b_k = np.random.rand(matrix.shape[1])
    for _ in range(n):
        b_k = np.dot(matrix, b_k)

    return b_k 

这里的基体是numpy的矩阵和不会发生错误。

如果传递SciPy的稀疏矩阵作为一个参数时,会出现以下错误:ValueError异常:形状(6762,6762)和(1,6762)不对齐:6762(暗1)= 1(暗0)!

我变了

b_k = np.random.rand(matrix.shape[1])

b_k = np.random.rand(matrix.shape[1], 1)

这使得积的工作,但不会返回正确的b_k形状。 我需要的形状是:(6762)

编辑:到目前为止,我一直在努力,重塑这样的:

b_k = np.reshape(b_k, (matrix.shape[1],))

但这种变换的形状(6762,1)到(1,6762),而不是(6762)

有小费吗? 谢谢!

Answer 1:

好像为了使用np.dot稀疏矩阵你需要将它与第一个转换为密集矩阵matrix.toarray() 另见https://docs.scipy.org/doc/scipy/reference/sparse.html#matrix-vector-product



文章来源: Dot product between scipy sparse matrix and numpy array give ValueError