How to obtain elements from the matrix above the main diagonal?
Assuming I have a matrix:
m = np.arange(16).reshape((4, 4)) m array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]])
And I need to get a list of elements which are above the main diagonal (I don't care about the order as long as it is determined and will not change from call to call), I wrote:
def get_elements_above_diagonal(m): for i in range(len(m)): for j in range(i + 1, len(m)): yield m[i, j] list(get_elements_above_diagonal(m)) [1, 2, 3, 6, 7, 11]
But then I wondered, may be I am reinventing the wheel here. Is there a simpler way to obtain these elements as a flat list?