我有一个方阵 A(可以是任何大小),我想取上三角部分并将这些值放在一个数组中,而没有中心对角线下方的值(k = 0)。

A = array([[ 4,  0,  3],
           [ 2,  4, -2],
           [-2, -3,  7]])

使用 numpy.triu(A) 让我
A = array([[ 4,  0,  3],
           [ 0,  4, -2],
           [ 0,  0,  7]])

但是从这里我将如何只将上三角元素复制到一个简单的数组中?如:
[4, 0, 3, 4, -2, 7]

我打算只是迭代并复制所有非零元素,但是允许上三角形中的零。

最佳答案

可以使用Numpy的upper triangular indices functionA的上三角提取成平面数组:

>>> A[np.triu_indices(3)]
array([ 4,  0,  3,  4, -2,  7])

并且可以轻松地将其转换为 Python 列表:
>>> list(A[np.triu_indices(3)])
[4, 0, 3, 4, -2, 7]

关于python - 如何仅将上三角值从 numpy.triu() 复制到数组中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20645672/

10-12 20:11