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

To jest krótka wersja macierzy Pythona, którą mam. Mam informacje w górnym trójkącie. Czy istnieje łatwa funkcja kopiowania górnego trójkąta do dolnego trójkąta macierzy?Skopiuj górny trójkąt do dolnego trójkąta w matrycy Pythona

Odpowiedz

3

Jeśli dobrze rozumiem pytanie, wierzę, że będzie działać

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

Dzięki !. Czuję się jak idiota, może potrzebuję kawy ... – biojl

+4

Nie jesteś idiotą, ten rodzaj podejścia może być powolny – Eric

14

Aby to zrobić w NumPy, bez użycia podwójnej pętli, można użyć tril_indices.

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

Należy uważać, aby nie próbować mieszać tril_indices i triu_indices jako Obie używają rzędzie głównych indeksowania, to znaczy to nie działa:

>>> 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 
Powiązane problemy