У меня есть 3 массива numpy формы 2xN (с большим N, несколько миллионов), назовите их a1, a2, a3. Тогда у меня есть еще один массив формы Nx3, значения строк которого относятся к одному из массивов a1, a2, a3, называют его перестановками. Этот перестановками массив выглядит следующим образом: [[0, 1, 2], [1,2,0], [1,0,2], ... до N строк]Выберите значения из набора массивов в соответствии с массивом перестановок
Я хочу создайте еще 3 массива numpy b1, b2, b3 формы 2xN, которые имеют содержимое исходных a1, a2, a3, но их столбцы были перегруппированы в соответствии с строками массива перестановок.
Я пробовал причудливую индексацию, укладывая 3 массива, и numpy.choose, но я не могу заставить ее работать. Я ищу решение без петель python. Любая помощь будет принята с благодарностью!
EDIT
Просто для уточнения я показываю реализацию Питона цикла, что я пытаюсь сделать:
aa = np.dstack((a1, a2, a3))
bb = np.empty_like(aa)
for i, o in enumerate(permutations):
bb[:,i, np.arange(3)] = aa[:, i, o]
Тогда я бы восстановить b1, b2, b3 от бб.
Спасибо! Я буду использовать первый вариант. – martinako
@martinako Yup, похоже, это самый быстрый! – Divakar