
上QQ阅读APP看书,第一时间看更新
5.1.6 数组的切片
要从数组中获取元素的值,或者修改数组的元素值,都需要定位到数组的元素,这可以通过索引和切片来实现。与列表和元组类似,数组的索引也是从0开始,从左到右逐渐增大,也可以用负数做索引,从右到左由-1逐渐减小。
1.一维数组的切片
对于一维数组,可以用slice()函数定义一个切片对象,格式为slice(stop)或slice(start,stop[,step]),切片不包括stop。也可以在数组中直接用冒号“:”来指定切片,格式为array [start:stop:step],视情况可以省略start、stop和step,但是不能省略冒号“:”。如果省略start,则认为从索引0开始;如果省略stop,则默认到数组的最后一个元素;如果省略step,则默认步长是1。下面的代码是一维切片的应用。

2.多维数组的切片
多维数组的切片要比一维数组稍微复杂,需要对每一维指定切片,每维的切片之间用逗号“,”隔开。多维数组的切片还可以使用“...”,表示匹配尽可能多的逗号“,”,例如a是5维数组,则a[1,2,...]等价于x[1,2,:,:,:],a[...,3]等价于a[:,:,:,:,3],a[4,...,5,:]等价于[4,:,:,5,:]。
下面的代码是多维切片的一些应用。

需要注意的是,用切片新生成的数组与原数组共用内存,因此修改一个数组的值,另外一个数组的值也会同时发生变化,例如下面的代码。
