购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3-5 多维数组的索引与切片

在多维数组的应用中,基本概念图形如下图所示。

上述是3×5的数组,3指的是行(row),5则指的是列(column)。对于二维数组而言轴数是2,分别是axis=0,axis=1,上述图形也说明了垂直线是轴0(axis=0),水平线是轴1(axis=1),更多轴的定义将在3-5-1节说明。

3-5-1 认识axis的定义

程序实例 ch3_11.py: 建立3×5的二维数组同时打印结果。

执行结果 这个程序可以得到如下结果。

在轴(axis)的定义中,最小轴编号代表数组的最外层,所以上述最外层的轴编号是0,相当于axis=0,在此层有3个子数组,分别是[0, 1, 2, 3, 4]、[5, 6, 7, 8, 9]、[10, 11, 12, 13, 14]。最大数值的轴代表最内层,此例是axis=1,每个数组有5个元素。2个二维数组,可以建立三维数组,参考如下实例。

程序实例 ch3_12.py: 建立2×3×5的三维数组同时打印结果。

执行结果 这个程序可以得到如下结果。

读者可能已发现轴编号是由最外层往最内层编号。

3-5-2 多维数组的索引

下图是二维数组内容与相对位置的索引图。

要索引二维数组内容须使用2个索引,分别是 axis=0 的索引编号与 axis=1 的索引编号,细节可以参考下列实例。

程序实例 ch3_13.py: 列出二维数组特定索引的数组元素。

执行结果

:上述第8行“ x4[2][1] ”,也可以写成“ x4[2,1] ”,读者可以参考ch3_13_1.py,代码如下所示。

下图是三维数组内容与相对位置的索引图。

要索引三维数组内容须使用3个索引,分别是 axis=0 的索引编号、 axis=1 的索引编号与 axis=2 的索引编号,细节可以参考下列实例。

程序实例 ch3_14.py: 列出三维数组特定索引的数组元素。

执行结果

上述第9行索引的引用方式也可以参考ch3_14_1.py实例,代码如下所示。

3-5-3 多维数组的切片

3-4-3节数组切片的概念也可以应用于多维数组,因为切片可能造成降维,下列将直接以实例解说。

程序实例 ch3_15.py: 二维数组切片的应用。

执行结果

上述切片可以使用下列图例解说,需要特别注意的是,红色虚线框的内容是使用切片降维成一维数组的结果。另外,x[:,4:]和x[:,4]表面上结果是4, 9, 14,但是x[:,4]第2个索引指明切片是第4列(column),所以得到的是降维结果,也就是从二维数据降成一维数据。

索引在使用上会偏向使用[ , ]处理维度之间的切片,而不是使用[ ][ ],如果使用[ ][ ]做切片有时候会造成错误。

程序实例 ch3_16.py: 使用 [ ][ ] 切片造成错误的实例。

执行结果 drhkItj4xrSHQ9yiWQO10CHi8vT4CLCFo5QfNJVEJwEXE5actTFgl1STGLu/zqna

点击中间区域
呼出菜单
上一章
目录
下一章
×