how to copy only upper triangular values into array from numpy.triu()?

numpy, python

Solution

You can use Numpy's upper triangular indices function to extract the upper triangular of `A` into a flat array:

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

And can easily convert this to a Python list:

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

Problem

I have a square matrix A (could be any size) and I want to take the upper triangular part and place those values in an array without the values below the center diagonal (k=0). ``` A = array([[ 4, 0, 3], [ 2, 4, -2], [-2, -3, 7]]) ``` using numpy.triu(A) gets me to ``` A = array([[ 4, 0, 3], [ 0, 4, -2], [ 0, 0, 7]]) ``` but from here how would I copy only the upper triangular elements into a simply array? Such as: ``` [4, 0, 3, 4, -2, 7] ``` I was going to just iterate though and copy all non-zero elements, however zero's in the upper triangular are allowed.

Original source

Related problems