我正在尝试计算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,)
有什么提示吗?谢谢!
答案 0 :(得分:0)
似乎要在稀疏矩阵上使用np.dot
,您首先需要使用matrix.toarray()
将其转换为密集矩阵。
另请参见https://docs.scipy.org/doc/scipy/reference/sparse.html#matrix-vector-product