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]])