Numpy中Ndarray数组的操作

2018-12-03  本文已影响0人  白水弓手

本部分内容主要讲解numpy中Ndarray数组的基本操作过程,包括数组的索引和切片.

数组的索引与切片

索引:获取数组中特定位置元素的过程
切片:获取数组中特定片段元素的过程

一维数组的索引

一维数组的索引与Python中的列表类似,使用[]即可;
既可以通过0向右递增,也可以-1向左递减都可以获得对应的元素;
例如获取元素"3",可以有以下两种方式.

a = np.array([1,2,3,4,5,6])
a[2] 或者 a[-4]
>>3
一维数组的切片

具体的使用方式为:
[起始编号:终止编号:步长]
注意:

  1. Ndarray数组是从第0个开始的,例如数组a中的'1'是第0个元素;
  2. 不含终止编号的元素,即是左闭右开的;
  3. 步长默认为1,可以省略..
  4. 索引值之间用冒号隔开.
a[1:4:2]
>>array([2, 4])
a[1:4]
>>array([2, 3, 4])
多维数组的索引

创建多维数组:

a_234 = np.arange(24).reshape((2,3,4))
>>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]]])
  1. 通过索引获取多维数组中的某个元素.
  2. 既可以从0开始从左向右递增的方式获取,也可以从-1开始从右向左递减的方式获取.
  3. []中具体含义是:获取数组第几层的元素包含的第几个元素中的第几个元素.
  4. 多维索引中的每个索引值之间通过逗号隔开.
a_234[1,2,3]  //第1层中的第2行中的第3列的元素
>>23
a_234[-1,-2,-3] //使用负数从右向左递减的方式获取具体值
>>17
多维数组的切片
a_234[:,1,-3]    //第一维度的所有元素
>>array([ 5, 17])
a_234[:,1:3,:]   //第二维度的第一行和第二行中的所有元素
>>array([[[ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[16, 17, 18, 19],
        [20, 21, 22, 23]]])
a_234[:,:,::2]  //
>>array([[[ 0,  2],
        [ 4,  6],
        [ 8, 10]],

       [[12, 14],
        [16, 18],
        [20, 22]]])
a_234[:,:,1::2]
>>array([[[ 1,  3],
        [ 5,  7],
        [ 9, 11]],

       [[13, 15],
        [17, 19],
        [21, 23]]])

对于二位数组,将多维数组对应的索引值个数减少为2,就可以使用相应的操作了.
数组切片的操作不好理解,尤其是多维数组,重点是要确定参数范围的选取.

上一篇 下一篇

猜你喜欢

热点阅读