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.
Смотрите также
Примеры
>>> 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])