稀疏稀疏矩阵和numpy数组之间的点积给出ValueError

时间:2019-04-20 17:52:07

标签: numpy vector scipy sparse-matrix valueerror

我正在尝试计算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矩阵,没有错误发生。

如果将稀疏稀疏矩阵作为参数传递,则会发生以下错误:ValueError:形状(6762,6762)和(1,6762)的形状未对齐:6762(dim 1)!= 1(dim 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,)

有什么提示吗?谢谢!

1 个答案:

答案 0 :(得分:0)

似乎要在稀疏矩阵上使用np.dot,您首先需要使用matrix.toarray()将其转换为密集矩阵。 另请参见https://docs.scipy.org/doc/scipy/reference/sparse.html#matrix-vector-product