многомерный поиск numpy

#python #numpy #lookup-tables

#питон #тупица #таблицы поиска

Вопрос:

 lookup = numpy.array([  [["a", "b", "c"], ["d", "e", "f"]],  [["g", "h", "i"], ["j", "k", "l"]],  [["m", "n", "o"], ["p", "q", "r"]],  ]) i = numpy.array([  [[0,0,0], [1,0,2],],  [[2,0,1], [1,0,2],],  ])  

Я хочу использовать массив i для доступа к значениям в поиске массива. i имеет размеры m x n x 3 (3, потому что поиск представляет собой 3-мерный массив). Поэтому я хотел бы получить массив размеров m x n, заполненный значениями a[i[m][n]]. Так что в данном случае ожидается:

 out = [ ["a", "i"], ["n", "i"] ]  

Я могу справиться с циклами for в python, но как я мог бы сделать это в numpy?

Ответ №1:

Вы можете извлечь координаты из i и использовать их для извлечения подмножества lookup .

 import numpy   lookup = numpy.array([  [["a", "b", "c"], ["d", "e", "f"]],  [["g", "h", "i"], ["j", "k", "l"]],  [["m", "n", "o"], ["p", "q", "r"]],  ]) i = numpy.array([  [[0,0,0], [1,0,2],],  [[2,0,1], [1,0,2],],  ])   x = i[:,:,0] y = i[:,:,1] z = i[:,:,2]  out = lookup[x,y,z]  

Выход

 [['a' 'i']  ['n' 'i']]  

Комментарии:

1. Ах, спасибо, чувак!!

2. Не за что! Если ваша проблема решена, не забудьте принять ответ. 😉