numpy.triu_indices#
- numpy.triu_indices(n, k=0, m=None)[источник]#
Возвращает индексы для верхнего треугольника массива (n, m).
- Параметры:
- nint
Размер массивов, для которых возвращенные индексы будут действительны.
- kint, необязательный
Смещение диагонали (см.
triuподробности).- mint, необязательный
Колонное измерение массивов, для которых возвращаемые массивы будут действительны. По умолчанию m принимается равным n.
- Возвращает:
- , лицензировано подкортеж, shape(2) из ndarrays, shape(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]])