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

问题描述 投票:0回答:1

我正在尝试计算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(dim 1)!= 1(dim 0)

我改变了

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

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

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

编辑:到目前为止,我试图像这样重塑:

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

但这会将形状(6762,1)转换为(1,6662),而不是(6762,)

有小费吗?谢谢!

numpy vector scipy sparse-matrix valueerror
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.