scipy.sparse.
diags#
- scipy.sparse.diags(diagonals, offsets=0, shape=None, format=None, dtype=None)[源代码][源代码]#
从对角线构造一个稀疏矩阵。
警告
此函数返回一个稀疏矩阵 – 而不是稀疏数组。建议使用
diags_array
以利用稀疏数组功能。- 参数:
- 对角线类似数组的序列
包含矩阵对角线的数组序列,对应于 offsets。
- 偏移量整数序列或单个整数,可选
- 要设置的对角线:
k = 0 主对角线(默认)
k > 0 第 k 条上对角线
k < 0 第 k 条下对角线
- 形状整数元组,可选
结果的形状。如果省略,将返回一个足够大的方形矩阵以包含对角线。
- 格式{“dia”, “csr”, “csc”, “lil”, …}, 可选
结果的矩阵格式。默认情况下(format=None),将返回适当的稀疏矩阵格式。此选择可能会更改。
- dtypedtype, 可选
矩阵的数据类型。
参见
spdiags
从对角线构造矩阵
diags_array
构造稀疏数组而不是稀疏矩阵
注释
此函数与
spdiags
在处理非对角线元素的方式上有所不同。diags
的结果是以下内容的稀疏等价物:np.diag(diagonals[0], offsets[0]) + ... + np.diag(diagonals[k], offsets[k])
不允许重复的对角偏移。
Added in version 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.]])