numpy.diag_indices#

numpy.diag_indices(n, ndim=2)[原始碼]#

傳回用於存取陣列主對角線的索引。

這會傳回索引的元組,可用於存取維度 a.ndim >= 2 和形狀 (n, n, …, n) 的陣列 a 的主對角線。對於 a.ndim = 2,這是通常的對角線,對於 a.ndim > 2,這是用於存取 a[i, i, ..., i] 的索引集合,其中 i = [0..n-1]

參數:
nint

返回的索引可用於的陣列,其每個維度的大小。

ndimint,可選

維度的數量。

範例

>>> import numpy as np

建立一組索引以存取 (4, 4) 陣列的對角線

>>> di = np.diag_indices(4)
>>> di
(array([0, 1, 2, 3]), array([0, 1, 2, 3]))
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> a[di] = 100
>>> a
array([[100,   1,   2,   3],
       [  4, 100,   6,   7],
       [  8,   9, 100,  11],
       [ 12,  13,  14, 100]])

現在,我們建立索引來操作 3-D 陣列

>>> d3 = np.diag_indices(2, 3)
>>> d3
(array([0, 1]), array([0, 1]), array([0, 1]))

並使用它將零陣列的對角線設定為 1

>>> a = np.zeros((2, 2, 2), dtype=int)
>>> a[d3] = 1
>>> a
array([[[1, 0],
        [0, 0]],
       [[0, 0],
        [0, 1]]])