numpy.mask_indices#

numpy.mask_indices(n, mask_func, k=0)[源代码]#

返回给定掩码函数的访问 (n, n) 数组的索引.

假设 mask_func 是一个函数,对于一个大小为 (n, n) 的方形数组 a 和一个可能的偏移参数 k,当调用为 mask_func(a, k) 时,返回一个在某些位置为零的新数组(像 triutril 这样的函数正是这样做的).然后这个函数返回非零值所在位置的索引.

参数:
nint

返回的索引将有效访问形状为 (n, n) 的数组.

mask_funccallable

一个调用签名类似于 triu, tril 的函数.即,``mask_func(x, k)`` 返回一个布尔数组,形状类似于 x.`k` 是函数的可选参数.

kscalar

一个可选参数,该参数传递给 mask_func.像 triu, tril 这样的函数接受第二个参数,该参数被解释为一个偏移量.

返回:
indices数组的元组.

对应于 mask_func(np.ones((n, n)), k) 为 True 的位置的 n 个索引数组.

备注

在 1.4.0 版本加入.

示例

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