给定两个列向量x,y:scipy.sparse.csc_matrix,其中len(x)== len(y)== N和max(x.nnz,y.nnz)== M,以及对称N ×N矩阵A:scipy.sparse.csc_matrix,其中对于所有列j,A [j] .nnz = C,我需要计算xT * A * y =ΣΣᵢ,ⱼx[i] * a [j] [i] * y [j]在最多M * max(M,C)步骤中有效,可以通过以下方式实现:
我的问题是,是否可以使用高级Python和现有库(如果是,那么如何)来实现,或者这是否需要自定义C / C ++代码。
使用scipy库的以下天真Python代码:
(x.T).dot(A).dot(y)[0, 0]
单独计算:
这总共需要O(M * N)步,这对于大N来说是一个主要的减速。