数组切片与索引
1.一维数组切片与python中列表切片非常类似。
1.1我们可以通过下标选取元素,下标从0开始。
x=np.arange(9)
print(x[[4,5,6,2]])
print(type(x[[4,5,6,2]]))
'''
[4 5 6 2]
<class 'numpy.ndarray'>
'''
1.2通过切片获取,切片是一个左闭右开区间。
x=np.arange(9)
print(x[2:7])
[2 3 4 5 6]
还可以选取步长。
x=np.arange(18)
print(x[2:16:2])
[ 2 4 6 8 10 12 14]
也可以选取负数下标进行数组翻转。
x=np.arange(18)
print(x[::-1])
[17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0]
1.3使用逻辑运算符选取切片。
x=np.arange(18)
print(x[(x>2)&(x<15)])
'''
[ 3 4 5 6 7 8 9 10 11 12 13 14]
'''
x=np.arange(18)
print(x[(x>2)|(x<15)])
'''
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17]
'''
#布尔数组索引
x=np.arange(6)
a=np.array([True,False,False,True,True,True])
print(x[a])
'''
[0 3 4 5]
'''
2.多维数组切片
谈到多维数组就必须理解数组的维度和轴的概念了。不赘述。
多维数组切片与数组的分割很类似。我们在做数组切片时,参数的顺序也是轴的顺序。
每一条轴都可以视为一个一维数组,方法自然大同小异了。
x=np.arange(24).reshape(2,3,4)
pp.pprint(x)
pp.pprint(x[0,:,:])#选取第一轴的第一个元素
pp.pprint(x[:,0,:])#选取第二轴的第一个元素
pp.pprint(x[:,:,0])#选取第三轴的第一个元素
pp.pprint(x[:,::-1,::-1])#倒序输出
pp.pprint(x[:,::2,::3])#指定步长
pp.pprint(x[:,:,:-1])#第一轴倒序
'''
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]]])
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
array([[ 0, 1, 2, 3],
[12, 13, 14, 15]])
array([[ 0, 4, 8],
[12, 16, 20]])
array([[[11, 10, 9, 8],
[ 7, 6, 5, 4],
[ 3, 2, 1, 0]],
[[23, 22, 21, 20],
[19, 18, 17, 16],
[15, 14, 13, 12]]])
array([[[ 0, 3],
[ 8, 11]],
[[12, 15],
[20, 23]]])
array([[[ 0, 1, 2],
[ 4, 5, 6],
[ 8, 9, 10]],
[[12, 13, 14],
[16, 17, 18],
[20, 21, 22]]])
进程已结束,退出代码为 0
'''



浙公网安备 33010602011771号