6

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

4

3 回答 3

5

更可靠的答案是hpaulj 的 answerOferHelman 的 answer的组合。

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

定义形状变量保留了 A 在 SP 上的维数。我发现如果没有这个添加步骤,任何以 scipy 稀疏矩阵结尾的零列都会丢失。

于 2016-02-23T00:28:51.610 回答
1

取自http://maggotroot.blogspot.co.il/2013/11/constrained-linear-least-squares-in.html

coo = A.tocoo()
SP = spmatrix(coo.data, coo.row.tolist(), coo.col.tolist())
于 2015-02-25T08:45:53.433 回答
0

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

cvxopt.spmatrix(x, I, J[, size[, tc]])

看起来类似于scipy.sparse

coo_matrix((data, (i, j)), [shape=(M, N)])

我的猜测是,如果Acoo格式的矩阵,那

cvxopt.spmatrix(A.data, A.row, A.col, A.shape)

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

于 2014-08-15T01:23:04.530 回答