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