本部分内容主要讲解numpy中Ndarray数组的基本操作过程,包括数组的索引和切片.
数组的索引与切片
索引:获取数组中特定位置元素的过程
切片:获取数组中特定片段元素的过程
一维数组的索引
一维数组的索引与Python中的列表类似,使用[]即可;
既可以通过0向右递增,也可以-1向左递减都可以获得对应的元素;
例如获取元素"3",可以有以下两种方式.
a = np.array([1,2,3,4,5,6])
a[2] 或者 a[-4]
>>3
一维数组的切片
具体的使用方式为:
[起始编号:终止编号:步长]
注意:
- Ndarray数组是从第0个开始的,例如数组a中的'1'是第0个元素;
- 不含终止编号的元素,即是左闭右开的;
- 步长默认为1,可以省略..
- 索引值之间用冒号隔开.
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]]])
- 通过索引获取多维数组中的某个元素.
- 既可以从0开始从左向右递增的方式获取,也可以从-1开始从右向左递减的方式获取.
- []中具体含义是:获取数组第几层的元素包含的第几个元素中的第几个元素.
- 多维索引中的每个索引值之间通过逗号隔开.
a_234[1,2,3] //第1层中的第2行中的第3列的元素
>>23
a_234[-1,-2,-3] //使用负数从右向左递减的方式获取具体值
>>17
多维数组的切片
- 在每个维度上使用给出的切片空间获取元素并组合起来的数据集.
- :冒号表示该维度上的所有元素。
- ::2表示从0开始以2为步长,每个维度可以使用步长跳跃切片.
- 1::2从1开始以2为步长.
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,就可以使用相应的操作了.
数组切片的操作不好理解,尤其是多维数组,重点是要确定参数范围的选取.
网友评论