📅  最后修改于: 2023-12-03 14:46:21.708000             🧑  作者: Mango
在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
矩阵的上三角部分的所有索引,并使用这些索引来获取数组的上三角元素。