numpy.triu_indices#
- numpy.triu_indices(n,k=0,m=None)[source]#
Return the indices for the upper-triangle of an (n, m) array.
- Parameters:
- nint
The size of the arrays for which the returned indices willbe valid.
- kint, optional
Diagonal offset (see
triufor details).- mint, optional
The column dimension of the arrays for which the returnedarrays will be valid.By defaultm is taken equal ton.
- Returns:
- indstuple, shape(2) of ndarrays, shape(n)
The row and column indices, respectively. The row indices are sortedin non-decreasing order, and the correspdonding column indices arestrictly increasing for each row.
See also
tril_indicessimilar function, for lower-triangular.
mask_indicesgeneric function accepting an arbitrary mask function.
triu,tril
Examples
>>>importnumpyasnp
Compute two different sets of indices to access 4x4 arrays, one for theupper triangular part starting at the main diagonal, and one starting twodiagonals further right:
>>>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]))
Note that row indices (first array) are non-decreasing, and the correspondingcolumn indices (second array) are strictly increasing for each row.
Here is how they can be used with a sample array:
>>>a=np.arange(16).reshape(4,4)>>>aarray([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])
Both for indexing:
>>>a[iu1]array([ 0, 1, 2, ..., 10, 11, 15])
And for assigning values:
>>>a[iu1]=-1>>>aarray([[-1, -1, -1, -1], [ 4, -1, -1, -1], [ 8, 9, -1, -1], [12, 13, 14, -1]])
These cover only a small part of the whole array (two diagonals rightof the main one):
>>>iu2=np.triu_indices(4,2)>>>a[iu2]=-10>>>aarray([[ -1, -1, -10, -10], [ 4, -1, -1, -10], [ 8, 9, -1, -1], [ 12, 13, 14, -1]])