2013-06-30 3 views
7

下三角行列を生成し、下三角行列の値を使って行列を完成させ、対角零点の周りで対称な正方行列を作成したいとします。Python - 下三角行列の正方行列を見つけるにはどうしたらいいですか?

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, 1, 2, 4], 
[1, 0, 3, 5], 
[2, 3, 0, 6], 
[4, 5, 6, 0]]) 

感謝を。

答えて

9

あなたは、単にその転置に追加することができます。

>>> 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

あなたはnumpy.triu_indicesまたはnumpy.tril_indicesを使用することができます。私は私の元の答えを修正し、現在の対称性を得るいる

>>> 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私の配列の中で – rtrwalker

+0

これは、対角要素がゼロであることに依存していないので、DSMのものよりも良い答えです。 –

関連する問題