数组切片与索引

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

'''

 

 

posted @ 2021-09-06 11:09  zeroy610  阅读(236)  评论(0)    收藏  举报