У меня есть два массива:
a
: трехмерный исходный массив ( N x M x 2 ) b
:массив двумерных индексов ( N x M ), содержащий 0 и 1 с.
Я хочу использовать индексы в b
для выбора соответствующих элементов a
в своем третьем измерении.Полученный массив должен иметь размеры N x M .Вот пример кода:
import numpy as np
a = np.array( # dims: 3x3x2
[[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15],
[16, 17]]]
)
b = np.array( # dims: 3x3
[[1, 1, 1],
[1, 1, 1],
[1, 1, 1]]
)
# select the elements in a according to b
# to achieve this result:
desired = np.array(
[[ 1, 3, 5],
[ 7, 9, 11],
[13, 15, 17]]
)
Сначала я подумал, что у этого должно быть простое решение, но я не смог его найти вообще.Так как я хотел бы перенести его на tenorflow, я был бы признателен, если бы кто-нибудь знал для этого решение типа numpy.
Edit: Третье измерение a
может содержать более двухэлементы.Следовательно, b
может также содержать индексы, отличные от 0 и 1 - это не логическая маска.