scipy.sparse.
diags_array#
- scipy.sparse.diags_array(diagonals, /, *, offsets=0, shape=None, format=None, dtype=None)[源]#
从对角线构造稀疏数组。
- 参数:
- diagonals类似数组的序列
包含数组对角线的数组序列,与 offsets 对应。
- offsets整数序列或单个整数,可选
- 要设置的对角线(不允许重复的偏移量)
k = 0 主对角线(默认)
k > 0 第 k 个上对角线
k < 0 第 k 个下对角线
- shape整数元组,可选
结果的形状。如果省略,将返回一个足够大以包含对角线的方阵。
- format{“dia”, “csr”, “csc”, “lil”, …},可选
结果的矩阵格式。默认情况下 (format=None) 返回适当的稀疏数组格式。此选择可能会更改。
- dtype数据类型,可选
数组的数据类型。
- 返回:
- new_arraydia_array
dia_array
包含 diagonals 中的值,这些值从主对角线偏移,如 offsets 中所示。
另请参阅
dia_array
稀疏 DIAgonal 格式的构造函数。
备注
不允许重复的对角线偏移。
`diags_array` 的结果是稀疏形式的等价物
np.diag(diagonals[0], offsets[0]) + ... + np.diag(diagonals[k], offsets[k])
`diags_array` 在处理非对角线的方式上与
dia_array
不同。具体来说,dia_array
假设数据输入在正/负偏移的行首/行尾包含填充(被忽略的值),而 `diags_array` 假设输入数据没有填充。输入 diagonals 中的每个值都将被使用。版本 1.11 中新增。
示例
>>> from scipy.sparse import diags_array >>> diagonals = [[1, 2, 3, 4], [1, 2, 3], [1, 2]] >>> diags_array(diagonals, offsets=[0, -1, 2]).toarray() array([[1., 0., 1., 0.], [1., 2., 0., 2.], [0., 2., 3., 0.], [0., 0., 3., 4.]])
支持标量广播(但需要指定形状)
>>> diags_array([1, -2, 1], offsets=[-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_array([1, 2, 3], offsets=1).toarray() array([[ 0., 1., 0., 0.], [ 0., 0., 2., 0.], [ 0., 0., 0., 3.], [ 0., 0., 0., 0.]])