[] 符号+slice对象切片:
target = np.arange(24).reshape(4,2,3)
target[0:3,:,1:3]
>>>
array([[[ 1, 2],
[ 4, 5]],
[[ 7, 8],
[10, 11]],
[[13, 14],
[16, 17]]])
注意,如果[]
符号当中对应的维度输入值都是长度相同的列表(或一维数组)时,其返回结果并不是子数组,而是输入值分别代表各元素在各个维度的索引值:
target = np.arange(24).reshape(4,2,3)
target
>>>
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23]]])
target[0,0,0] # 索引值 0
target[1,1,1] # 索引值 10
target[[0,1],[0,1],[0,1]] # 索引值 0 , 10 的数组
>>>
0
10
array([ 0, 10])
布尔数组切片
-
使用方法:
若要保留某一个维度的若干维数,只需传入相应位置为True且其余位置为False的布尔数组。
例如,保留外层维度中维数为0和2的子数组:
target[[True,False,True,False],:,:] >>> array([[[ 0, 1, 2], [ 3, 4, 5]], [[12, 13, 14], [15, 16, 17]]])
并且,对于连续多个出现在最后几个维度的全体切片
:
,可省略:target[[True,False,True,False]] # 等同于上述例子
对于连续多个出现在最初几个维度的全体切片
:
,可用...
来简写:target[:,:,0::2] == target[...,0::2]