Copia el triángulo superior al triángulo inferior en una matriz de python

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 

Esta es una versión corta de la matriz de python que tengo. Tengo la información en el triángulo superior. ¿Existe una función fácil para copiar el triángulo superior al triángulo hacia abajo de la matriz?

Si entiendo la pregunta correctamente, creo que esto funcionará

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

Para hacer esto en NumPy, sin usar un bucle doble, puedes usar tril_indices .

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

Tenga cuidado de no intentar mezclar tril_indices y triu_indices ya que ambos utilizan la indexación de la fila principal, es decir, esto no funciona:

 >>> 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