2013-05-08 191 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 

這是我擁有的python矩陣的簡短版本。我有三角形上部的信息。是否有一個簡單的功能將上三角形複製到矩陣的下三角形?將上三角形複製到蟒蛇矩陣中的下三角形

回答

3

如果我理解正確的問題,我相信這將工作

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

謝謝!我覺得自己像一個白癡,我可能需要一些咖啡... – biojl 2013-05-08 16:07:35

+4

你不是一個白癡,這種方法可以慢 – Eric 2017-06-03 23:52:57

14

要與NumPy做到這一點,而無需使用一個雙循環,您可以使用tril_indices

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

要小心,你不嘗試混合tril_indicestriu_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