當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy linalg.block_diag用法及代碼示例

本文簡要介紹 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, … 數組,最多二維

輸入數組。一維數組或類似數組的長度序列n被視為具有形狀的二維數組(1,n).

返回

D ndarray

對角線上有 A、B、C、... 的數組。 D 與 A 具有相同的 dtype。

注意

如果所有輸入數組都是方陣,則輸出稱為塊對角矩陣。

空序列(即大小為零的array-likes)將不會被忽略。值得注意的是, [] 和 [[]] 都被視為形狀為 (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.]])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.block_diag。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。