首页 文章

Scipy / numpy:两个密集的,一个稀疏点产品

提问于
浏览
0

假设我们有一个大小为 NxN 的矩阵 A ,而 A 是稀疏的, N 非常大 . 所以我们自然希望存储就像scipy稀疏矩阵一样 .

我们还有一个密集的numpy数组 q ,大小为 NxK ,其中 K 相对较小 .

我们如何最有效地执行 q.T * A * q ,其中 * 是矩阵乘法,以获得 KxK 结果?

我们想要的一部分可以有效地完成,这只是 A * q ,但是一旦你这样做,你就实现了一个密集的数组,然后你需要与另一个密集的数组相乘 .

有什么方法比 q.T.dot(A.dot(q)) 更快?

1 回答

  • 0

    所以你有了

    (k,N) * (N,N) * (N,k) => (k,k)
    

    其中一个点积导致密集阵列;那个时候另一个密集也很密集 . 通过这样的乘法,您可以快速松开稀疏性 .

    如果 q 有很多0,并且您希望保留问题的稀疏矩阵性质,请在执行此乘法之前使 q 稀疏 .

相关问题