Numpy получить индекс строки со вторым по величине значением - PullRequest
0 голосов
/ 02 февраля 2019

Мне известно, как получить индекс строки, содержащей самый большой элемент с этим фрагментом:

np.argmax(np.max(x, axis=0))

Однако как я могу получить индекс второй по величине строки?Я полагаю, что могу отрезать строку x, а затем повторить попытку, но есть ли более элегантное решение для этого, которое можно масштабировать для 3-го по величине, 4-го и т. Д.?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Используйте argsort на плоской версии, а затем используйте np.unravel_index, чтобы получить строки, индексы столбцов -

row,col = np.unravel_index(np.argsort(x.ravel()),x.shape)

Тогда самый большой индекс строки будет row[-1], второй по величине в row[-2]и так далее.Аналогично, для столбцов используйте col.

. Поэтому для удобства вы можете перевернуть элементы и использовать:

row,col = row[::-1],col[::-1]

Тогда самые большие из них будут в [0],второй по величине в [1] и т. д.

0 голосов
/ 02 февраля 2019

Вы можете использовать np.argsort(np.max(x, axis=0))[-2].

Это масштабируется до любого индекса, который вы хотите, изменяя индекс среза с -2 на -index.

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