2013-06-30 42 views
0

我生成了一個下三角矩陣,並且我想用下三角矩陣中的值完成矩陣以形成一個方陣。如何找到下三角numpy矩陣的方陣? (帶有旋轉的上三角)

lower_triangle = numpy.array([ 
    [0,0,0,0], 
    [1,0,0,0], 
    [2,3,0,0], 
    [4,5,6,0]]) 

我想生成以下完整矩陣,保持了零對角線:

complete_matrix = numpy.array([ 
    [0, 6, 5, 4], 
    [1, 0, 3, 2], 
    [2, 3, 0, 1], 
    [4, 5, 6, 0]]) 

感謝。

+2

這個問題是不是重複 - 另一個問題是問不同矩陣結構,並且需要不同的解決方案來解決它被標記爲重複的問題。 – talonmies

回答

2

如何:

>>> m 
array([[0, 0, 0, 0], 
     [1, 0, 0, 0], 
     [2, 3, 0, 0], 
     [4, 5, 6, 0]]) 
>>> np.rot90(m,2) 
array([[0, 6, 5, 4], 
     [0, 0, 3, 2], 
     [0, 0, 0, 1], 
     [0, 0, 0, 0]]) 
>>> m + np.rot90(m, 2) 
array([[0, 6, 5, 4], 
     [1, 0, 3, 2], 
     [2, 3, 0, 1], 
     [4, 5, 6, 0]]) 

又見fliplr(m)[::-1]

0

沒有任何另外:

>>> a=np.array([[0, 0, 0, 0], 
...    [1, 0, 0, 0], 
...    [2, 3, 0, 0], 
...    [4, 5, 6, 0]]) 
>>> irows,icols = np.triu_indices(len(a),1) 
>>> a[irows,icols]=a[icols,irows] 
>>> a 
array([[0, 1, 2, 4], 
     [1, 0, 3, 5], 
     [2, 3, 0, 6], 
     [4, 5, 6, 0]])