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 个索引数组.

示例

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