2013-06-30 16 views
7

Daha düşük bir üçgen matris oluşturdum ve matrisini alt üçgen matrisindeki değerleri kullanarak, köşegen sıfırlar etrafında simetrik olan kare bir matris oluşturmak için tamamlamak istiyorum.Python - Alt üçgensel numpy matrisinin kare matrisini nasıl bulabilirim? (simetrik bir üst üçgeni ile)

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

sıfır diyagonal muhafaza aşağıdaki tam matris oluşturmak istiyorum:

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

teşekkür ederiz.

cevap

9

Sadece kendi devrik ekleyebilirsiniz:

>>> m 
array([[0, 0, 0, 0], 
     [1, 0, 0, 0], 
     [2, 3, 0, 0], 
     [4, 5, 6, 0]]) 
>>> m + m.T 
array([[0, 1, 2, 4], 
     [1, 0, 3, 5], 
     [2, 3, 0, 6], 
     [4, 5, 6, 0]]) 
7
Sen numpy.triu_indices veya numpy.tril_indices kullanabilirsiniz

:

>>> 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]]) 
+0

@DSM ben düzelttik özgün cevabım şimdi simetri olsun Benim dizgimde – rtrwalker

+0

Bu, DSM'den daha iyi bir yanıttır çünkü köşegen elemanlar sıfırdır. –

İlgili konular