当前位置: 首页>>代码示例>>用法及示例精选>>正文


python scipy linalg.block_diag用法及代码示例

用法:

scipy.linalg.block_diag(*arrs)

从提供的数组创建块对角矩阵。

给定输入A,B和C,输出将在对角线上排列以下数组:

[[A, 0, 0],
 [0, B, 0],
 [0, 0, C]]

参数:

A, B, C, …array_like, up to 2-D

输入数组。一维数组或长度为n的数组序列被视为具有形状的二维数组(1,n)

返回值:

Dndarray

在对角线上有A,B,C等的数组。 D与A具有相同的dtype。

注意:

如果所有输入数组均为正方形,则输出称为块对角矩阵。

空序列(即array-likes的大小为零)将不会被忽略。值得注意的是,[]和[[]]都被视为具有形状的矩阵(1,0)

例子:

>>> from scipy.linalg import block_diag
>>> A = [[1, 0],
...      [0, 1]]
>>> B = [[3, 4, 5],
...      [6, 7, 8]]
>>> C = [[7]]
>>> P = np.zeros((2, 0), dtype='int32')
>>> block_diag(A, B, C)
array([[1, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0],
       [0, 0, 3, 4, 5, 0],
       [0, 0, 6, 7, 8, 0],
       [0, 0, 0, 0, 0, 7]])
>>> block_diag(A, P, B, C)
array([[1, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 3, 4, 5, 0],
       [0, 0, 6, 7, 8, 0],
       [0, 0, 0, 0, 0, 7]])
>>> block_diag(1.0, [2, 3], [[4, 5], [6, 7]])
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 0.,  2.,  3.,  0.,  0.],
       [ 0.,  0.,  0.,  4.,  5.],
       [ 0.,  0.,  0.,  6.,  7.]])

源码:

scipy.linalg.block_diag的API实现见:[源代码]

注:本文由纯净天空筛选整理自 scipy.linalg.block_diag。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。