numpy.tril_indices#

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

傳回 (n, m) 陣列下三角部分的索引。

參數:
nint

傳回索引將有效的陣列的列維度。

kint,選填

對角線偏移量(詳見 tril)。

mint,選填

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

傳回值:
inds陣列元組

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

另請參閱

triu_indices

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

mask_indices

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

tril, triu

範例

>>> import numpy as np

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

>>> il1 = np.tril_indices(4)
>>> il1
(array([0, 1, 1, 2, 2, 2, 3, 3, 3, 3]), array([0, 0, 1, 0, 1, 2, 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[il1]
array([ 0,  4,  5, ..., 13, 14, 15])

也適用於賦值

>>> a[il1] = -1
>>> a
array([[-1,  1,  2,  3],
       [-1, -1,  6,  7],
       [-1, -1, -1, 11],
       [-1, -1, -1, -1]])

這些涵蓋了幾乎整個陣列(主對角線右側的兩個對角線)。

>>> il2 = np.tril_indices(4, 2)
>>> a[il2] = -10
>>> a
array([[-10, -10, -10,   3],
       [-10, -10, -10, -10],
       [-10, -10, -10, -10],
       [-10, -10, -10, -10]])