2013-12-17 58 views
7

我有一個矩形矩陣A(可以是任何大小),我想取上三角部分,並將這些值放入一個沒有低於中心對角線(k = 0)的值的數組中。如何從numpy.triu()僅將上三角值複製到數組中?

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] 

我只是迭代雖然並複製所有非零元素,但是在上三角的零是允許的。

回答

12

您可以使用與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] 
相關問題