Получить рейтинг из массива NumPy - PullRequest
0 голосов
/ 30 октября 2018

У меня есть такой массив, как следующий

values = [0.1, 0.9, 0.8, 0.65, 0.2, 0.7]

Мне нужно знать как значение, так и индекс верхнего значения, и я получаю это с помощью

int(np.argmax(values))
max(values)

Но теперь мне также нужно знать второе по величине и третье по величине значение из массива и соответственно сохранить индекс. Как я могу изменить свой код, чтобы получить эти значения?

Ответы [ 4 ]

0 голосов
/ 30 октября 2018

Способ 1 - использование списков Python:

values = [0.1, 0.9, 0.8, 0.65, 0.2, 0.7]
#Create a copy of the list
vals = values[:]
print(vals)
for i in range(len(vals)):
    m = max(vals)
    print(i+1,'-',values.index(m),'-',m)
    vals.remove(m)

Метод 2 - использование numpy, как объяснено piripiri:

import numpy as np
indices = np.argsort(values)[::-1]
print(indices)

for i in range(len(values)):
    print(i+1,'-',indices[i],'-',values[indices[i]])
0 голосов
/ 30 октября 2018

Вы можете использовать np.argsort, это дает вам индексы самых больших чисел.

indices = np.argsort(values)[::-1]
print(indices)

[::-1] переворачивает список, что необходимо, потому что argsort возвращает индексы в возрастающем порядке. Это дает:

[1, 2, 5, 3, 4, 0]

Тогда вы можете использовать

values[indices[n]]

для получения n -го наибольшего значения.

0 голосов
/ 30 октября 2018
np.argsort(values)

Возвращает

array([0, 4, 3, 5, 2, 1])
0 голосов
/ 30 октября 2018

просто удалите самое высокое значение и затем используйте int(np.argmax(values))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...