numpy.mask_indices#

numpy.mask_indices(n, mask_func, k=0)[source]#

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

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

参数:
nint

返回的索引对于访问形状为 (n, n) 的数组有效。

mask_funccallable

一个函数,其调用签名类似于 triutril。也就是说,mask_func(x, k) 返回一个布尔数组,形状与 x 相同。 k 是函数的一个可选参数。

k标量

一个可选参数,传递给 mask_func。像 triutril 这样的函数带有一个第二个参数,该参数被解释为偏移量。

返回值:
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])