scipy.linalg.

block_diag#

scipy.linalg.block_diag(*arrs)[原始碼]#

從提供的陣列建立區塊對角矩陣。

給定輸入 ABC,輸出將在對角線上排列這些陣列

[[A, 0, 0],
 [0, B, 0],
 [0, 0, C]]
參數:
A, B, C, …array_like,最多 2 維

輸入陣列。長度為 n 的 1 維陣列或類陣列序列被視為形狀為 (1,n) 的 2 維陣列。

返回:
Dndarray

對角線上具有 ABC、… 的陣列。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.]])