Попытка ранжировать два массива одновременно - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь получить рейтинг худших сценариев, но есть два разных типа худших сценариев, которые я пытаюсь сравнить.Итак, у меня есть два отдельных массива, и я пытаюсь сравнить их друг с другом.

Я использовал метод сортировки по ссылке ниже, и он работает при сортировке с одним массивом, но не с двумя.

Ранжирование элементов в массиве, используя Python / NumPy, без сортировки массива дважды

CI_SUM_1 = numpy.array([2,1,7,23])
CI_SUM_2 = numpy.array([4,0,22,3])
order = CI_SUM_1.argsort() + CI_SUM_2.argsort() 
rank = order.argsort()
print(rank)

В приведенном выше примере это сложение рангов вместе (что имеет смысл), поэтому я получаю[0,2,1,3].Который не то, что я ищу.Я пытаюсь получить 8 рангов, чтобы я мог видеть отдельные ранги.

Ожидаемый результат должен быть примерно таким, как [2,1,5,7,4,0,6,3], то есть рангами при размещении двух массивов рядом.По сути, я хочу получить абсолютный ранг, а не ранг за массив.Поэтому я хочу только один 1, если два значения не совпадают.Я не хочу два массива из 0-3, я хочу один из 0-7.

1 Ответ

0 голосов
/ 27 июня 2019

Вам необходимо concatenate два массива CI_SUM_1 и CI_SUM_2 перед использованием argsort, например:

print (np.concatenate([CI_SUM_1,CI_SUM_2]).argsort().argsort())
array([2, 1, 5, 7, 4, 0, 6, 3], dtype=int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...