2013-05-08 8 views
7
 iluropoda_melanoleuca bos_taurus callithrix_jacchus canis_familiaris 
ailuropoda_melanoleuca  0  84.6    97.4    44 
bos_taurus     0   0    97.4    84.6 
callithrix_jacchus   0   0     0    97.4 
canis_familiaris   0   0     0     0 

में ऊपरी त्रिभुज को निचले त्रिकोण को कॉपी करें यह मेरे पास पाइथन मैट्रिक्स का एक छोटा संस्करण है। मेरे पास ऊपरी त्रिकोण में जानकारी है। क्या मैट्रिक्स के नीचे त्रिकोण पर ऊपरी त्रिकोण को कॉपी करने के लिए कोई आसान कार्य है?एक पाइथन मैट्रिक्स

उत्तर

3

अगर मैं सवाल सही ढंग से समझ, मेरा मानना ​​है कि यह काम

for i in range(num_rows): 
    for j in range(i, num_cols): 
     matrix[j][i] = matrix[i][j] 
+0

धन्यवाद !. मुझे बेवकूफ लगता है, मुझे कुछ कॉफी चाहिए ... – biojl

+4

आप बेवकूफ नहीं हैं, इस तरह का दृष्टिकोण धीमा हो सकता है – Eric

14

NumPy में ऐसा करने के लिए होगा, एक डबल पाश का उपयोग किए बिना, आप tril_indices उपयोग कर सकते हैं।

>>> i_lower = np.tril_indices(n, -1) 
>>> matrix[i_lower] = matrix.T[i_lower] # make the matrix symmetric 

ध्यान रहे कि आप tril_indices और triu_indices मिश्रण करने की कोशिश वे दोनों उपयोग पंक्ति प्रमुख अनुक्रमण, अर्थात के रूप में, यह काम नहीं करता तो नहीं रखा

>>> i_upper = np.triu_indices(n, 1) 
>>> i_lower = np.tril_indices(n, -1) 
>>> matrix[i_lower] = matrix[i_upper] # make the matrix symmetric 
>>> np.allclose(dist.T, dist) 
False 
संबंधित मुद्दे