numpy.triu_indices#

numpy.triu_indices(n, k=0, m=None)[原始碼]#

傳回 (n, m) 陣列的上三角形索引。

參數:
nint

傳回索引將有效的陣列大小。

kint,選用

對角線偏移量(詳情請參閱 triu)。

mint,選用

傳回陣列將有效的陣列欄維度。預設情況下,m 等於 n

傳回值:
indstuple,形狀為 (2) 的 ndarray,形狀為 (n)

分別為列和欄索引。列索引以非遞減順序排序,且對應的欄索引對於每一列都嚴格遞增。

另請參閱

tril_indices

類似函數,用於下三角形。

mask_indices

接受任意遮罩函數的通用函數。

triu, tril

範例

>>> import numpy as np

計算兩組不同的索引以存取 4x4 陣列,一組用於從主對角線開始的上三角形部分,另一組從主對角線向右兩個對角線開始

>>> iu1 = np.triu_indices(4)
>>> iu1
(array([0, 0, 0, 0, 1, 1, 1, 2, 2, 3]), array([0, 1, 2, 3, 1, 2, 3, 2, 3, 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[iu1]
array([ 0,  1,  2, ..., 10, 11, 15])

以及用於賦值

>>> a[iu1] = -1
>>> a
array([[-1, -1, -1, -1],
       [ 4, -1, -1, -1],
       [ 8,  9, -1, -1],
       [12, 13, 14, -1]])

這些僅涵蓋整個陣列的一小部分(主對角線右側的兩個對角線)

>>> iu2 = np.triu_indices(4, 2)
>>> a[iu2] = -10
>>> a
array([[ -1,  -1, -10, -10],
       [  4,  -1,  -1, -10],
       [  8,   9,  -1,  -1],
       [ 12,  13,  14,  -1]])