根据
文档:
整数
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
是一维的,a[2]
是零维的。
在更高的维度中,如果X
是四维的,形状为(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