Как я могу отсортировать каждую строку 2d-массива numpy по другому 2d-индексному массиву?

#python #numpy

Вопрос:

Например, у меня есть:

 arr = np.array[[10 30 20],
               [30 20 10]]

indices = np.array[[2 1 0],
                   [2 1 0]]
 

Я хочу:

 [[20 30 10],
 [10 20 30]]
 

Большое вам спасибо!!

Ответ №1:

Используйте np.take_along_axis :

 import numpy as np

arr = np.array([[10, 30, 20],
               [30, 20, 10]])

indices = np.array([[2, 1, 0],
                   [2, 1, 0]])


res = np.take_along_axis(arr, indices, axis=1)
print(res)
 

Вывод

 [[20 30 10]
 [10 20 30]]