#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. Не за что! Если ваша проблема решена, не забудьте принять ответ. 😉