📜  Python| Numpy np.triu_indices(1)

📅  最后修改于: 2023-12-03 14:46:21.708000             🧑  作者: Mango

Python | Numpy np.triu_indices

在NumPy中使用np.triu_indices()函数可以返回一个数组的上三角部分的索引(indices),对于对角线上的元素,也可以选择是否包含。

语法
np.triu_indices(n, k=0, m=None)

参数:

  • n:整数,数组的大小(n, n)。
  • k:整数,绞句的偏移量,值为零表示主对角线,负值表示对角线下侧,正值表示对角线上侧。
  • m:整数,数组的列数,默认为n,也可以取更大的值。这样,通过使m比n大,就可以在矩阵外部填充数据。

返回值:

  • 输出两个元组,包含完整数组中上三角元素的行和列所对应的索引。行和列索引都是以数组形式表示,并且长度相同,可用于获取数组的上三角部分。
示例
import numpy as np
 
arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])
 
print(np.triu_indices(3, 0))  # 输出 (array([0, 0, 1]), array([0, 1, 1]))
print(np.triu_indices(3, 1))  # 输出 (array([0, 0, 1]), array([1, 2, 2]))

在上面的例子中,我们使用了相同的数组arr,将其对角线以下的元素删除,得到一个3×3的上三角矩阵。对于np.triu_indices(3, 0),输出的行和列索引都是从主对角线开始的。对于np.triu_indices(3, 1),输出的行和列索引都是在主对角线以下的。

使用上三角索引取出数组的上三角矩阵
import numpy as np
 
arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])
 
rows, cols = np.triu_indices(3)  # 获取矩阵的上三角部分索引
print(arr[rows, cols])  # 输出 [1 2 3 5 6 9]

rows, cols = np.triu_indices(3, 1)  # 获取矩阵的对角线以下的索引
print(arr[rows, cols])  # 输出 [2 3 6]

在上面的例子中,我们使用np.triu_indices()函数获取到3×3矩阵的上三角部分的所有索引,并使用这些索引来获取数组的上三角元素。