稀疏矩阵到cvxopt spmatrix?

Eli*_*ico 6 scipy sparse-matrix cvxopt

我需要将scipy稀疏矩阵转换为cvxopt的稀疏矩阵格式spmatrix,并且还没有遇到任何问题(矩阵太大,无法转换为密集矩阵)。任何想法如何做到这一点?

小智 5

更可靠的答案是hpaulj的答案OferHelman的答案的组合

def scipy_sparse_to_spmatrix(A):
    coo = A.tocoo()
    SP = spmatrix(coo.data.tolist(), coo.row.tolist(), coo.col.tolist(), size=A.shape)
    return SP
Run Code Online (Sandbox Code Playgroud)

定义形状变量可保留A在SP上的尺寸。我发现,如果不添加此步骤,任何以scipy稀疏矩阵结尾的零列都将丢失。


hpa*_*ulj 0

来自http://cvxopt.org/userguide/matrices.html#sparse-matrices

cvxopt.spmatrix(x, I, J[, size[, tc]])
Run Code Online (Sandbox Code Playgroud)

看起来类似于scipy.sparse

coo_matrix((data, (i, j)), [shape=(M, N)])
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果A是格式矩阵coo,那么

cvxopt.spmatrix(A.data, A.row, A.col, A.shape)
Run Code Online (Sandbox Code Playgroud)

会工作。(我没有cvxopt安装来测试这个。)