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,最多 2 維
輸入陣列。長度為 n 的 1 維陣列或類陣列序列被視為形狀為
(1,n)
的 2 維陣列。
- 返回:
- Dndarray
對角線上具有 A、B、C、… 的陣列。D 具有與 A 相同的 dtype。
註解
如果所有輸入陣列都是方陣,則輸出稱為區塊對角矩陣。
空序列(即,零大小的類陣列)將不會被忽略。值得注意的是,[] 和 [[]] 都被視為形狀為
(1,0)
的矩陣。範例
>>> import numpy as np >>> 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.]])