我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文就是针对ndarray元素定位的一个加强版练习题目,题目的龙套演员依然是(3,3,3)的立方体矩阵,主要需求就是定位各个层或者边。

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 读取三维矩阵数据组合
python教程,如何读取ndarray三维数组上的数据切片?(图12-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程感悟。本文对ndarray的三维矩阵进行个复习。测试环境:win10python@3.11.0numpy@1.24.2pandas@1.5.3

前置内容

下面的链接是前置阅读的相关内容,可以有助于本文内容的理解。

三维数组

这里依然还是以最经典的例子,引出本文的大龙套(3,3,3)的立方体矩阵。

import numpy as np
s = np.arange(27).reshape(3,3,3)
print(s)

苏南大叔给出的矩阵图如下:

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 立方体矩阵示意图
python教程,如何读取ndarray三维数组上的数据切片?(图12-2)

读取 层/通道/水平面

立方体共有三层,对于 每层/每个通道/每个水平面 的数据读取方法,方法如下:

读取对象第一种第二种第三种
最上面第一层s[0]s[:][0]s[:][:][0]
中间的第二层s[1]s[:][3]s[:][:][4]
最下面第三层s[2]s[:][5]s[:][:][6]

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 读取层数据
python教程,如何读取ndarray三维数组上的数据切片?(图12-3)

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 访问第一层数据2
python教程,如何读取ndarray三维数组上的数据切片?(图12-4)

读取 屏幕垂直面

读取和屏幕垂直的三个面,代码如下:

读取对象方法
最左边第一层s[:,0]
中间的第二层s[:,1]
最右边第三层s[:,2]

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 竖直面数据
python教程,如何读取ndarray三维数组上的数据切片?(图12-5)

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 竖直面数据2
python教程,如何读取ndarray三维数组上的数据切片?(图12-6)

读取 屏幕平行面

读取屏幕平行的三个面,方法如下:

读取对象方法
最内测第一层s[:,:,0]
中间的第二层s[:,:,1]
最外侧第三层s[:,:,2]

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 访问平行面数据
python教程,如何读取ndarray三维数组上的数据切片?(图12-7)

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 竖直面数据2
python教程,如何读取ndarray三维数组上的数据切片?(图12-8)

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 竖直面数据3
python教程,如何读取ndarray三维数组上的数据切片?(图12-9)

这个面就比较特殊了,看下图对比:虽然它的数据看起来也是正常的。但是对它取0的时候(想拿到某个边),显示的数据是竖排的,而不是传统的横排的。

读取某条边

先找到对应边所在的平面,每条边都存在于某个平面上,这个平面又体现为二维数组。这条边或者为行,或者为列。必定在某一行上面是作为行存在,读取它即可。

读取对象方法
最外侧顶部第一条边,0/1/2s[:][:][0][0]
最内侧顶部第一条边,0/3/6s[:,:,0][0]
最中间的平行于屏幕的轴心边,10/13/16s[:,:,1][14]
最外侧平行于屏幕的最下边,20/23/26s[:,:,2][15]

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 访问边边数据
python教程,如何读取ndarray三维数组上的数据切片?(图12-10)

这里需要注意的是:l2数据看起来正常,console里输出值是[0 3 6],但是通过屏幕平行面访问到的边,表现形式上变成了竖排。【究竟是哪个属性控制的呢?】

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 访问线数据
python教程,如何读取ndarray三维数组上的数据切片?(图12-11)

到目前为止,所有拿到的数据类型都是ndarray,在线的层级上再试图拿点的数据的时候,可能会碰到int32 not supported的情况,实际上并没有出错,只是因为pycharmdata可视化这边,只支持二维数组。

读取某个点

这里就以最中心原点数字13为例,进行处理。

读取中心点代码
方法一s[:][:][18][1][19]
方法二s[:][20][1][21]
方法三s[1][22][1]
方法四s[:,1][23][1]
方法五s[:,:,1][24][1]
方法N...

苏南大叔:python教程,如何读取ndarray三维数组上的数据切片? - 很多种方式
python教程,如何读取ndarray三维数组上的数据切片?(图12-12)

结束语

更多python相关文章,请参考苏南大叔的文章合集:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python