高效创建对角稀疏矩阵的方法

8

我有以下使用Numpy的Python代码:

p = np.diag(1.0 / np.array(x))

我如何将其转换为稀疏矩阵p2,使其与p具有相同的值,而不必先创建p

2个回答

11
使用 scipy.sparse.spdiags(起初可能会感到很困惑)scipy.sparse.dia_matrix 和/或 scipy.sparse.lil_diags 来构建稀疏矩阵(取决于所需的矩阵格式...)
例如,使用 spdiags
import numpy as np
import scipy as sp
import scipy.sparse

x = np.arange(10)

# "0" here indicates the main diagonal...
# "y" will be a dia_matrix type of sparse array, by default
y = sp.sparse.spdiags(x, 0, x.size, x.size)

1
使用scipy.sparse模块,
p = sparse.dia_matrix(1.0 / np.array(x), shape=(len(x), len(x)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接