Пер the docs:
Целое число, i
, возвращает те же значения, за исключением того, i:i+1
размерность возвращаемого объекта уменьшается на 1
. В частности, набор кортежей с p
-ым элементом целое число (и все остальные записи :
) возвращает соответствующую подматрицу с размером N - 1
. Если N = 1
, тогда возвращаемый объект является скалярным массивом.
Таким образом, когда ваш индекс представляет собой целое число, значение (ы) по этому индексу является (являются) возвращается и соответствующая ось удаляется. В одном измерении поведение, как и следовало ожидать:
In [6]: a = np.arange(5); a
Out[6]: array([0, 1, 2, 3, 4])
In [7]: a[2]
Out[7]: 2
In [8]: a[2].shape
Out[8]:()
a
является 1-мерным, a[2]
является 0-мерным.
В более высоких измерениях, если X
представляет собой 4-мерный и форм (1783,1,96,96)
, то X[11,:,:,:]
возвращает все значения, где первый индекс оси равняется 11, а затем, что ось удалена. Таким образом, X[11,:,:,:].shape
- (1,96,96)
.
Когда срез определяет диапазон, например, a[2:3]
тогда все значения в пределах этого диапазона возвращаются и ось не удаляется:
In [9]: a[2:3]
Out[9]: array([2])
In [10]: a[2:3].shape
Out[10]: (1,)
Аналогично, X[11:12, :, :, :]
имеет форму (1,1,96,96)
.
Или вы можете сказать 'X [[11],:] .shape' – jez