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稀疏矩阵结尾的零列都将丢失。
来自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安装来测试这个。)
| 归档时间: |
|
| 查看次数: |
1248 次 |
| 最近记录: |