numpy.tril_indices#

numpy.tril_indices(n, k=0, m=None)[источник]#

Возвращает индексы для нижнего треугольника массива (n, m).

Параметры:
nint

Размерность строк массивов, для которых возвращенные индексы будут действительны.

kint, необязательный

Смещение диагонали (см. tril подробности).

mint, необязательный

Колонное измерение массивов, для которых возвращаемые массивы будут действительны. По умолчанию m принимается равным n.

Возвращает:
, лицензировано подкортеж массивов

Индексы строк и столбцов соответственно. Индексы строк отсортированы в неубывающем порядке, а соответствующие индексы столбцов строго возрастают для каждой строки.

Смотрите также

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