Я считаю такое поведение полным бредом. Это происходит только с массивами numpy, типичные массивы Python просто выдают ошибку.
Создадим два массива:
randomNumMatrix = np.random.randint(0,20,(3,3,3), dtype=np.int)
randRow = np.array([0,1,2], dtype=np.int)
Если мы передаем массив как индекс, чтобы получить что-то из другого массива, возвращается исходный массив.
randomNumMatrix[randRow]
Приведенный выше код возвращает эквивалент randomNumMatrix. Я нахожу это неинтуитивным. Я бы ожидал, что это не сработает или, по крайней мере, вернет эквивалент
randomNumMatrix[randRow[0]][randRow[1]][randRow[2]].
Дополнительные наблюдения:
A) Приведенный ниже код не работает, он выдает эту ошибку: IndexError: индекс 3 выходит за пределы оси 0 с размером 3.
randRow = np.array([0, 1, 3], dtype=np.int)
Б) К моему удивлению, приведенный ниже код работает:
randRow = np.array([0, 1, 2, 2,0,1,2], dtype=np.int)
Может кто-нибудь объяснить, в чем преимущества этой функции? На мой взгляд, это только создает большую путаницу.