2013-06-30 4 views
7

मैंने एक निम्न त्रिभुज मैट्रिक्स उत्पन्न किया है, और मैं निम्न त्रिकोणीय मैट्रिक्स में मानों का उपयोग करके मैट्रिक्स को पूरा करना चाहता हूं ताकि स्क्वायर मैट्रिक्स, विकर्ण शून्य के सममित सममित हो सके।पायथन - मैं निम्न त्रिकोणीय 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, 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

यह डीएसएम से एक बेहतर जवाब है क्योंकि यह शून्य होने वाले विकर्ण तत्वों पर भरोसा नहीं करता है। –

संबंधित मुद्दे