Настройка
arr = np.array([[0, 1, 2], [2, 0, 1], [0, 2, 1], [1, 2, 0]])
vals = np.array([2, 1, 2, 1])
Во-первых, вам нужно найти индекс ваших значений, который мы можем выполнить с помощью широковещания и argmax
(Это будетнайдите индекс first , не обязательно индекс only ):
idx = (arr == vals[:, None]).argmax(1)
# array([2, 2, 1, 0], dtype=int64)
Теперь с использованием базового индексирования и назначения:
r = np.arange(len(arr))
arr[r, idx], arr[:, 0] = arr[:, 0], arr[r, idx]
Вывод:
array([[2, 1, 0],
[1, 0, 2],
[2, 0, 1],
[1, 2, 0]])