Рассмотрим многомерный массив
arr = np.zeros((3,2,4))
и некоторый индексный массив
index_arr = np.array([2, 1])
Чтобы уточнить, что я хочу получить, вот это (но я хочу предоставлять индексы динамически):
arr[2, 1] # array([0. 0. 0. 0.])
НЕ это:
arr[[2, 1]] # which returns result with shape (2, 2, 4)
Я хотел бы сделать что-то подобное
arr[*index_arr] # using * to unpack the items of `index_arr`
но это дает синтаксическую ошибку. Есть ли собственный способ сделать то, о чем я прошу?
Вы можете сделать что-то вроде этого
arr[np.hsplit(index_arr,2)]
(предупреждает меня о будущем, но преобразование массива в кортеж должно быть простым)arr[2,1]
эквивалентноarr[(2,1)]
. Другими словами, чтобы применить числа к разным измерениям, они должны быть в кортеже, а не в списке или массиве. Я знаю, что страница документации по индексации массивов длинная, но вам действительно нужно время, чтобы прочитать ее всю.@hpaulj вау... спасибо