Предположим, я определил массив NumPy 3x3x3 с
x = numpy.arange(27).reshape((3, 3, 3))
Теперь я могу получить массив, содержащий элемент (0,1) каждого подмассива 3x3 с x[:, 0, 1]
, который возвращает array([ 1, 10, 19])
. Что если у меня есть кортеж (m, n) и я хочу получить элемент (m, n) каждого подмассива (0,1), хранящегося в кортеже?
Например, предположим, что у меня есть t = (0, 1)
. Я пробовал x[:, t]
, но у него неправильное поведение - он возвращает строки 0 и 1 каждого подмассива. Самое простое решение, которое я нашел, это
x.transpose()[tuple(reversed(t))].transpose()
но я уверен, что должен быть лучший способ. Конечно, в этом случае я мог бы сделать x[:, t[0], t[1]]
, но это не может быть обобщено на случай, когда я не знаю, сколько измерений x
и t
имеют.