scipy.linalg.block_diag¶
- scipy.linalg.block_diag(*arrs)[源代码]¶
从提供的数组创建挡路对角线矩阵。
在给定输入的情况下 A , B 和 C ,则输出将在对角线上排列这些数组::
[[A, 0, 0], [0, B, 0], [0, 0, C]]
- 参数
- A,B,C,..。类阵列,最高可达2维
输入数组。一维数组或类似数组的长度序列 n 被视为具有形状的二维数组
(1,n)
。
- 退货
- Dndarray
包含以下内容的阵列 A , B , C ,..。在对角线上。 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.]])