scipy.linalg.block_diag

scipy.linalg.block_diag(*arrs)[源代码]

从提供的数组创建挡路对角线矩阵。

在给定输入的情况下 ABC ,则输出将在对角线上排列这些数组::

[[A, 0, 0],
 [0, B, 0],
 [0, 0, C]]
参数
A,B,C,..。类阵列,最高可达2维

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

退货
Dndarray

包含以下内容的阵列 ABC ,..。在对角线上。 D 具有与相同的数据类型 A

注意事项

如果所有输入数组都是正方形,则输出称为挡路对角线矩阵。

空序列(即大小为零的类似数组)将不会被忽略。值得注意的是,两者都是 []和[[] ]被视为具有形状的矩阵 (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.]])