Я видел это один или два раза раньше, но я не могу найти никаких официальных документов на нем: Использование объектов python range
в качестве индексов в numpy.
import numpy as np
a = np.arange(9).reshape(3,3)
a[range(3), range(2,-1,-1)]
# array([2, 4, 6])
Давайте вызовем ошибку индексации только для того, чтобы подтвердить, что диапазоны не находятся в официальном диапазоне (каламбур) законных методов индексации:
a['x']
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
Теперь небольшое расхождение между Numpy и его документами не является совершенно неслыханным и не обязательно указывает на то, что функция не предназначена (см., Например, здесь ).
Так, кто-нибудь знает, почему это вообще работает? И если это предполагаемая особенность, какова точная семантика / для чего она нужна? И есть ли какие-либо обобщения НД?