Argsort 2D массив по его 2D координатам

#python #arrays #sorting #multidimensional-array

#python #массивы #сортировка #многомерный-массив

Вопрос:

Учитывая 2D-массив, как выполнить argsort его элементов и получить список координат элементов массива от самого низкого до самого высокого.

Например, учитывая:

 1 5
2 3
 

Мы получаем:

 [[0,0], [1,0], [1,1], [0,1].
 

Можем ли мы обобщить его на n размерные массивы?

Комментарии:

1. предполагая, что у вас есть N-мерный массив numpy A , вы можете сделать np.argsort(A, None).reshape(A.shape)

Ответ №1:

Для 2D точный ответ:

 A_2d_argsort = np.argsort(A, None)
ver = np.floor(A_2d_argsort // A.shape[1])
hor = A_2d_argsort % A.shape[1]

np.stack([ver,hor]).transpose()