numpy.mask_indices
-
numpy.mask_indices(n, mask_func, k=0)[source] -
Возвращает индексы для доступа к массивам (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— это необязательный аргумент функции. -
kscalar -
Необязательный аргумент, передаваемый в
mask_func. Такие функции, какtriu,tril, принимают второй аргумент, который интерпретируется как смещение.
-
- Возвращает
-
-
indicestuple of arrays. -
Массивы индексов, соответствующие расположениям, где
mask_func(np.ones((n, n)), k)имеет значение True.
-
См. также
Примечания
Новая в версии 1.4.0.
Примеры
Вот индексы, которые позволили бы вам получить доступ к верхней треугольной части любого массива 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])
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.mask_indices.html