Я бы использовал argsort()
:
top2_ind = score_matrix.argsort()[:,::-1][:,:2]
То есть создаст массив, содержащий индексы, которые будут сортировать score_matrix
:
array([[1, 2, 0],
[0, 1, 2],
[0, 1, 2]])
столбцы с ::-1
, затем возьмите первые два столбца с :2
:
array([[0, 2],
[2, 1],
[2, 1]])
Тогда аналогично, но с регулярным np.sort()
, чтобы получить значения:
top2_score = np.sort(score_matrix)[:,::-1][:,:2]
Который, следуя той же самой механике, что и выше, дает вам:
array([[ 1. , 0.4],
[ 0.8, 0.6],
[ 0.5, 0.3]])