У меня есть матрица размером 2d, матрица, формы (m, n). Мой фактическое использование регистр имеет т ~ 1e5 и п ~ 100, но ради иметь простой минимальный пример:fancy indexing numpy matrix: один элемент в строке
matrix = np.arange(5*3).reshape((5, 3))
У меня есть индексация массив целых чисел, IDX, по форме (м,), с каждая запись между [0, n). Этот массив указывает, какой столбец следует выбирать из каждой строки матрицы .
idx = np.array([2, 0, 2, 1, 1])
Итак, я пытаюсь выбрать столбец 2 из ряда 0, столбец 0 из строки 1, столбец 2 из строки 2, столбец 1 из строки 1 и столбца 1 из строки 4. Таким образом, окончательный ответ должен быть:
correct_result = np.array((2, 3, 8, 10, 13))
Я попробовал следующее, которое интуитивно, но неправильно:
incorrect_result = matrix[:, idx]
Что выше синтаксис делает применить IDX как фантазии массива индексации, строка за строкой, в результате чего в другой матрица формы (m, n), что я не хочу.
Каков правильный синтаксис для фантазийного индексирования этого типа?
Спасибо @ Дивакар, это действительно тот же вопрос. Не уверен, почему это не появилось в моем таком поиске, прежде чем спрашивать. – aph
Видимо, поисковая система на SO не так уж полезна. Итак, одна вещь, которую я делаю, - это поиск google с 'site: stackoverflow.com', добавленный к ключевым словам. – Divakar
Спасибо за подсказку, это звучит полезно! – aph