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

时间:2010-09-12 15:43:24

标签: python numpy scipy sparse-matrix

我使用Numpy在Python中使用以下代码:

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

如何在不首先创建p2的情况下对其进行转换以使稀疏矩阵p具有与p相同的值?

2 个答案:

答案 0 :(得分:8)

使用scipy.sparse.spdiags(这很多,因此最初可能会让人感到困惑),scipy.sparse.dia_matrix和/或scipy.sparse.lil_diags。 (取决于你想要稀疏矩阵的format ...)

E.g。使用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 :(得分:1)

使用scipy.sparse模块,

p = sparse.dia_matrix(1.0 / np.array(x), shape=(len(x), len(x)));