numpy.mask_indices#

numpy.mask_indices(n, mask_func, k=0)[источник]#

Возвращает индексы для доступа к массивам (n, n), заданные функцией маскирования.

Предположим, mask_func является функцией, которая для квадратного массива a размера (n, n) с возможным аргументом смещения k, при вызове как mask_func(a, k) возвращает новый массив с нулями в определённых местах (функции, подобные triu или tril делают именно это). Затем эта функция возвращает индексы, где будут расположены ненулевые значения.

Параметры:
nint

Возвращаемые индексы будут допустимы для доступа к массивам формы (n, n).

mask_funccallable

Функция, сигнатура вызова которой похожа на triu, tril. То есть, mask_func(x, k) возвращает логический массив той же формы, что и x. k является необязательным аргументом функции.

kскаляр

Опциональный аргумент, который передается в mask_funcФункции, такие как triu, tril принимает второй аргумент, который интерпретируется как смещение.

Возвращает:
индексыкортеж массивов.

The n массивы индексов, соответствующие позициям, где mask_func(np.ones((n, n)), k) равно True.

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

triu, tril, triu_indices, tril_indices

Примеры

>>> import numpy as np

Это индексы, которые позволят вам получить доступ к верхней треугольной части любого массива 3x3:

>>> iu = np.mask_indices(3, np.triu)

Например, если a является массивом 3x3:

>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> a[iu]
array([0, 1, 2, 4, 5, 8])

Смещение также может быть передано в функцию маскирования. Это даёт нам индексы, начинающиеся на первой диагонали справа от главной:

>>> iu1 = np.mask_indices(3, np.triu, 1)

с помощью которого мы теперь извлекаем только три элемента:

>>> a[iu1]
array([1, 2, 5])