Вы можете передать список координат, но вы должны транспонировать список. Таким образом, элементы i -го измерения передаются как i -й элемент в индексации, например, с помощью:
A[tuple(np.transpose(B))]
Для 4 × 4 × 4 матрица:
>>> A = np.arange(64).reshape(4,4,4)
>>> A
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]],
[[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31]],
[[32, 33, 34, 35],
[36, 37, 38, 39],
[40, 41, 42, 43],
[44, 45, 46, 47]],
[[48, 49, 50, 51],
[52, 53, 54, 55],
[56, 57, 58, 59],
[60, 61, 62, 63]]])
мы получаем для заданных координат:
>>> A[tuple(np.transpose(B))]
array([42, 57])
, и если мы рассчитаем их вручную, мы получим:
>>> A[2,2,2]
42
>>> A[3,2,1]
57
Фон :
A[1,2,3]
- это сокращение от A[(1,2,3)]
(так в кортеже). Вы можете выбрать несколько элементов с помощью A[([2,3], [2,2], [2,1])]
, но затем вам сначала нужно транспонировать данные.
Поскольку данные представлены как [[2,2,2], [3,2,1]]
, нам, таким образом, сначала нужно транспонировать в [[2,3], [2,2], [2,1]]
. Затем мы оборачиваем его в кортеж и можем использовать его для индексации A
.