Поведение для случая 2 не является четко определенным для случая 1. В следующем предложении, вероятно, отсутствует тонкость:
Во втором случаеизмерения из расширенных операций индексации вставляются в массив результатов в том же месте, в котором они находились в исходном массиве
Вы, вероятно, представляете однозначное соответствие между входом и выходомразмеры, возможно, потому что вы представляете себе индексацию в стиле Matlab.NumPy так не работает.Если у вас есть четыре массива со следующими формами:
a.shape == (2, 3, 4, 5, 6)
b.shape == (20, 30)
c.shape == (20, 30)
d.shape == (20, 30)
, тогда a[b, :, c, :, d]
имеет четыре измерения с длинами 3, 5, 20 и 30. Однозначного места для20 и 30. По умолчанию NumPy ставит их впереди.
С другой стороны, с a[:, b, c, d, :]
20 и 30 могут идти туда, где были 3, 4 и 5, потому что 34 и 5 были рядом друг с другом. целый блок новых измерений идет там, где был целый блок исходных размеров, который работает, только если исходные размеры были в одном блоке в исходной форме.