numpy.tril_indices#
- numpy.tril_indices(n, k=0, m=None)[源代码]#
返回一个 (n, m) 数组的下三角部分的索引。
- 参数:
- nint
返回的索引将有效的数组的行维度。
- kint, optional
对角线偏移(详情请参见
tril)。- mint, optional
返回的数组将有效的数组的列维度。默认情况下,m 取值等于 n。
- 返回:
- indstuple of arrays
行索引和列索引。行索引按非递减顺序排序,对于每一行,相应的列索引严格递增。
另请参阅
triu_indices类似的函数,用于上三角。
mask_indices接受任意掩码函数的通用函数。
tril,triu
示例
>>> import numpy as np
计算两个不同的索引集,用于访问 4x4 数组,一个用于从主对角线开始的下三角部分,另一个从右侧两个对角线开始
>>> 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]])