scipy.sparse.diags

scipy.sparse.diags(diagonals, offsets=0, shape=None, format=None, dtype=None)[源代码]

由对角线构造一个稀疏矩阵。

参数
diagonals类数组序列

包含矩阵对角线的数组序列,对应于 offsets

offsets整型或整型序列,可选
要设置的对角线:
  • K=0主对角线(默认)

  • k>0是第k个上对角线

  • k<0的第k个下对角线

shapeint的元组,可选

结果的形状。如果省略,则返回一个足以包含对角线的方阵。

format{“dia”,“csr”,“csc”,“lil”,.},可选

结果的矩阵格式。默认情况下(FORMAT=NONE)返回适当的稀疏矩阵格式。这一选择可能会发生变化。

dtype数据类型,可选

矩阵的数据类型。

参见

spdiags

由对角线构造矩阵

注意事项

此函数与 spdiags 它处理非对角线的方式。

结果来自 diags 是稀疏等效于::

np.diag(diagonals[0], offsets[0])
+ ...
+ np.diag(diagonals[k], offsets[k])

不允许重复对角线偏移。

0.11 新版功能.

示例

>>> from scipy.sparse import diags
>>> diagonals = [[1, 2, 3, 4], [1, 2, 3], [1, 2]]
>>> diags(diagonals, [0, -1, 2]).toarray()
array([[1, 0, 1, 0],
       [1, 2, 0, 2],
       [0, 2, 3, 0],
       [0, 0, 3, 4]])

支持标量广播(但需要指定形状):

>>> diags([1, -2, 1], [-1, 0, 1], shape=(4, 4)).toarray()
array([[-2.,  1.,  0.,  0.],
       [ 1., -2.,  1.,  0.],
       [ 0.,  1., -2.,  1.],
       [ 0.,  0.,  1., -2.]])

如果只需要一条对角线(如在 numpy.diag ),以下内容也适用:

>>> diags([1, 2, 3], 1).toarray()
array([[ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  2.,  0.],
       [ 0.,  0.,  0.,  3.],
       [ 0.,  0.,  0.,  0.]])