argpartition демонстрирует неожиданное поведение - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь использовать argpartition из numpy. В частности, я пытаюсь понять следующее поведение.

arr = [4,5,2,1,9,7]
np.argpartition(np.array(arr), 1)

В результате я получаю:

array([3, 2, 1, 0, 4, 5])

, но вместо этого я ожидал:

array([3, 2, 0, 1, 4, 5])

поскольку 5 больше 4

Что мне здесь не хватает? У меня такая же проблема, когда я меняю второй параметр argpartition на 0 (1 предшествует 0, хотя я ожидал обратного)

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Я думаю, что это именно то, что вы ищете, хотя результат не соответствует ожидаемому. Однако я думаю, что вы просто неправильно рассчитали желаемый результат:

import numpy as np
arr = [4,5,2,1,9,7] 
print(np.argsort(np.array(arr), 0))
>>>output([3 2 0 1 5 4])

Надеюсь, это поможет.

0 голосов
/ 06 мая 2020

Если вам нужна полная сортировка, вызовите argsort. Вы просили раздел, и вы его получили.

Нет никаких гарантий порядка в пределах каждой стороны раздела. Единственная гарантия состоит в том, что элементы меньше, чем точка разделения go перед точкой разделения, и элементы выше, чем точка разделения go после.

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