我需要将一个 scipy 稀疏矩阵转换为 cvxopt 的稀疏矩阵格式 spmatrix,并且还没有遇到任何东西(当然,矩阵太大而无法转换为密集矩阵)。任何想法如何做到这一点?
问问题
1696 次
3 回答
5
更可靠的答案是hpaulj 的 answer和OferHelman 的 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)])
我的猜测是,如果A
是coo
格式的矩阵,那
cvxopt.spmatrix(A.data, A.row, A.col, A.shape)
会工作。(我没有cvxopt
安装来测试这个。)
于 2014-08-15T01:23:04.530 回答