Puntuaciones correspondientes basadas en los bordes de una gráfica.

import numpy as np score = np.array([ [0.9, 0.7, 0.2, 0.6, 0.4], [0.7, 0.9, 0.6, 0.8, 0.3], [0.2, 0.6, 0.9, 0.4, 0.7], [0.6, 0.8, 0.4, 0.9, 0.3], [0.4, 0.3, 0.7, 0.3, 0.9]]) l2= [(3, 5), (1, 4), (2, 3), (3, 4), (2, 5), (4, 5)] 

Quiero obtener el vector de puntuaciones correspondiente en función de la lista de bordes. La matriz de puntuaciones representa una matriz de adyacencia donde la puntuación (1,2) representa el borde (1,2)

 OUTPUT: [0.7 0.6 0.6 0.4 0.3 0.3] 

Podríamos convertir la lista de tuplas que contienen los índices en una matriz y luego usar slicing o tuplas empaquetadas.

Por lo tanto, convertir a la matriz:

 l2_arr = np.asarray(l2)-1 

Entonces, una forma sería …

 score[l2_arr[:,0], l2_arr[:,1]] 

Otro –

 score[tuple(l2_arr.T)] 

Para completar, aquí hay uno que utiliza una comprensión de bucle para extraer los índices de fila y columna y, por lo tanto, evitar cualquier conversión de matriz:

 score[[i[0]-1 for i in l2], [i[1]-1 for i in l2]]