У меня есть 2D-массив:
>>> in_arr = np.array([[1,2],[4,3]])
array([[1, 2],
[4, 3]])
и я нахожу отсортированные индексы по столбцам, чтобы получить другой двумерный массив:
>>> col_sort = np.argsort(in_arr, axis=1)
array([[0, 1],
[1, 0]])
Я хотел бы знать эффективный кусочек для индексации первого по второму:
>>> redordered_in_arr = np.*SOME_SLICE_METHOD*(in_arr, col_sort, axis=1)
array([[1, 2],
[3, 4]])
Цель состоит в том, чтобы затем выполнить (более сложную) функцию над массивом по столбцам, например ::
.
>>> arr_with_function = reordered_in_arr ** np.array([1,2])
array([[1, 4],
[3, 16]])
и вернуть элементы в исходное положение в массиве
>>> return_order = np.argsort(col_sort, axis=1)
>>> redordered_in_arr = np.*SOME_SLICE_METHOD*(arr_with_function, return_order, axis=1)
array([[1, 4],
[16, 3]])
Хорошо, так что, думая об этом, когда я печатаю, я мог бы просто использовать apply_over_axis, но я все же хотел бы знать, как эффективно выполнить вышесказанное в случае, если это будет иметь значение позже ..