numpy.linalg.diagonal#
- linalg.diagonal(x, /, *, offset=0)[來源]#
傳回矩陣(或矩陣堆疊)
x
的指定對角線。此函數與 Array API 相容,與
numpy.diagonal
相反,矩陣假設由最後兩個維度定義。- 參數:
- x(…,M,N) array_like
輸入陣列,形狀為 (…, M, N),其最內層的兩個維度形成 MxN 矩陣。
- offsetint,選用
偏移量,指定相對於主對角線的副對角線,其中
* offset = 0: the main diagonal. * offset > 0: off-diagonal above the main diagonal. * offset < 0: off-diagonal below the main diagonal.
- 傳回值:
- out(…,min(N,M)) ndarray
一個包含對角線的陣列,其形狀由移除最後兩個維度並附加一個等於結果對角線大小的維度來決定。傳回的陣列必須與
x
具有相同的資料類型。
範例
>>> a = np.arange(4).reshape(2, 2); a array([[0, 1], [2, 3]]) >>> np.linalg.diagonal(a) array([0, 3])
3-D 範例
>>> a = np.arange(8).reshape(2, 2, 2); a array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.linalg.diagonal(a) array([[0, 3], [4, 7]])
鄰近於主對角線的對角線可以使用 offset 參數取得
>>> a = np.arange(9).reshape(3, 3) >>> a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.linalg.diagonal(a, offset=1) # First superdiagonal array([1, 5]) >>> np.linalg.diagonal(a, offset=2) # Second superdiagonal array([2]) >>> np.linalg.diagonal(a, offset=-1) # First subdiagonal array([3, 7]) >>> np.linalg.diagonal(a, offset=-2) # Second subdiagonal array([6])
反對角線可以使用
numpy.flipud
或numpy.fliplr
反轉元素順序來取得。>>> a = np.arange(9).reshape(3, 3) >>> a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) >>> np.linalg.diagonal(np.fliplr(a)) # Horizontal flip array([2, 4, 6]) >>> np.linalg.diagonal(np.flipud(a)) # Vertical flip array([6, 4, 2])
請注意,檢索對角線的順序會根據翻轉函數而有所不同。