Код: Выделить всё
foo = np.array([
[[1, 3],
[2, 4]],
[[4, 1],
[2, 3]],
[[3, 2],
[3, 1]],
[[2, 4],
[3, 1]],
[[1, 2],
[3, 4]]])
Код: Выделить всё
full_argsort(foo) == np.array(
[[0, 1],
[1, 0],
[1, 0],
[0, 1],
[0, 1]])
т.е.
Код: Выделить всё
pair_argsort([[1,2],[2,4]]) == [0,1]
pair_argsort([[2,1],[1,2]]) == [1,0]
pair_argsort([[1,2],[1,1]]) == [1,0] #NB
Код: Выделить всё
pair_of_pairs[pair_argsort(pair_of_pairs)]) == sorted(map(tuple, pair_of_pairs))
Я можно выполнить сортировку по только первому значению в кортеже с помощью np.argsort(foo.reshape(-1, 2, 2), axis=1)[:,:,0]:
Код: Выделить всё
array([[0, 1],
[1, 0],
[0, 1],
[0, 1],
[0, 1]])
(I' Я до сих пор не очень уверен, как использовать это для индексации foo, чтобы получить отсортированный массив... обновлю, когда выясню это
Как мне "кортежную сортировку аргументов" в numpy. ?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ered-pairs
Мобильная версия