Чтобы извлечь значения верхнего треугольника в плоский вектор, вы можете сделать что-то вроде следующего:
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a)
#array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
a[np.triu_indices(3)]
#or
list(a[np.triu_indices(3)])
array([1, 2, 3, 5, 6, 9])
Аналогично, для нижнего треугольника , используйте np.tril
.
ВАЖНО
Если вы хотите извлечь значения, которые выше диагонали (или ниже ) затем используйте аргумент k .Обычно используется, когда матрица симметрична.
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
#array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
a[np.triu_indices(3, k = 1)]
# this returns the following
array([2, 3, 6])