Numpy argsort в стиле кортежа упорядоченные пары упорядоченных пар?Python

Программы на Python
Ответить
Anonymous
 Numpy argsort в стиле кортежа упорядоченные пары упорядоченных пар?

Сообщение Anonymous »

У меня есть массив упорядоченных пар упорядоченных пар:

Код: Выделить всё

foo = np.array([
[[1, 3],
[2, 4]],

[[4, 1],
[2, 3]],

[[3, 2],
[3, 1]],

[[2, 4],
[3, 1]],

[[1, 2],
[3, 4]]])
Я хотел бы отсортировать каждую пару пар в обычном смысле сортировки кортежей Python:

Код: Выделить всё

my_argsort([[1,2],[2,4]]) == [0,1]
my_argsort([[2,1],[1,2]]) == [1,0]
my_argsort([[1,2],[1,1]]) == [1,0] #NB
В более общем плане (вплоть до массива/кортежа/списка):

Код: Выделить всё

pair_of_pairs[my_argsort(pair_of_pairs)]) == sorted(map(tuple, pair_of_pairs))
Тогда я мог бы использовать np.apply_along_axis(my_argsort,...) для сортировки всего foo. Однако было бы неплохо, если бы существовал какой-нибудь numpy-родной способ сделать это, а не применять мою функцию Python, которая кажется неэффективной.
Я можно выполнить сортировку по только первому значению в кортеже с помощью np.argsort(foo.reshape(-1, 2, 2), axis=1)[:,:,0]. (Я до сих пор не совсем уверен, как использовать это для индексации foo, чтобы получить отсортированный массив... обновлю, когда выясню это. :)
Как мне "tuple argsort" " в numpy?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ered-pairs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»