2013-09-24 5 views
3

У меня есть 2 многомерных массива, и я бы хотел использовать его как индекс для создания нового многомерного массива. Например:numpy с использованием многомерного массива индексов на другом многомерном массиве

a = array([[4, 3, 2, 5], 
      [7, 8, 6, 8], 
      [3, 1, 5, 6]]) 

b = array([[0,2],[1,1],[3,1]]) 

Я хочу использовать первый массив в б вернуть те индексированные элементы в первом массиве а, и так далее. Поэтому я хочу, чтобы результат был следующим:

array([[4,2],[8,8],[6,1]]) 

Это, вероятно, просто, но я не смог найти ответ, выполнив поиск. Благодарю.

ответ

2

Это немного сложнее, но следующие будут делать это:

>>> a[np.arange(3)[:, np.newaxis], b] 
array([[4, 2], 
     [8, 8], 
     [6, 1]]) 

Вы должны индексировать как строки и столбцы a массива, так чтобы они соответствовали вашим b массив, который вы должны были бы массив как это:

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

И тогда a[rows, b] бы ясно вернуть то, что вы после этого. Вы можете получить тот же результат, что и радиовещание, как указано выше, заменив массив rows на np.arange(3)[:, np.newaxis], что эквивалентно np.arange(3).reshape(3, 1).

+0

спасибо! отлично работал – cracka31

Смежные вопросы