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