numpy.tril_indices#

numpy.tril_indices(n, k=0, m=None)[source]#

返回 (n, m) 数组下三角的索引。

参数:
nint

返回的索引适用于的数组的行维度。

kint, optional

对角线偏移量(参见 tril 了解详情)。

mint, optional

返回的索引适用于的数组的列维度。默认情况下,mn 相等。

返回:
inds数组元组

分别是行索引和列索引。行索引按非递减顺序排序,对应的列索引在每一行中严格递增。

另请参阅

triu_indices

相似的函数,用于上三角。

mask_indices

通用函数,接受任意掩码函数。

tril, triu

示例

>>> import numpy as np

计算两组不同的索引来访问 4×4 数组,一组用于从主对角线开始的下三角部分,另一组用于向右偏移两个对角线的位置。

>>> il1 = np.tril_indices(4)
>>> il1
(array([0, 1, 1, 2, 2, 2, 3, 3, 3, 3]), array([0, 0, 1, 0, 1, 2, 0, 1, 2, 3]))

注意行索引(第一个数组)是非递减的,对应的列索引(第二个数组)在每一行中严格递增。下面展示了如何在示例数组中使用它们。

>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

用于索引

>>> a[il1]
array([ 0,  4,  5, ..., 13, 14, 15])

以及用于赋值

>>> a[il1] = -1
>>> a
array([[-1,  1,  2,  3],
       [-1, -1,  6,  7],
       [-1, -1, -1, 11],
       [-1, -1, -1, -1]])

这些几乎覆盖了整个数组(主对角线右移两个对角线的位置)

>>> il2 = np.tril_indices(4, 2)
>>> a[il2] = -10
>>> a
array([[-10, -10, -10,   3],
       [-10, -10, -10, -10],
       [-10, -10, -10, -10],
       [-10, -10, -10, -10]])