python教程,如何读取ndarray三维数组上的数据切片?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文就是针对ndarray
元素定位的一个加强版练习题目,题目的龙套演员依然是(3,3,3)
的立方体矩阵,主要需求就是定位各个层或者边。
大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程感悟。本文对ndarray
的三维矩阵进行个复习。测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。
前置内容
下面的链接是前置阅读的相关内容,可以有助于本文内容的理解。
三维数组
这里依然还是以最经典的例子,引出本文的大龙套(3,3,3)
的立方体矩阵。
import numpy as np
s = np.arange(27).reshape(3,3,3)
print(s)
苏南大叔给出的矩阵图如下:
读取 层/通道/水平面
立方体共有三层,对于 每层/每个通道/每个水平面 的数据读取方法,方法如下:
读取对象 | 第一种 | 第二种 | 第三种 |
---|---|---|---|
最上面第一层 | s[0] | s[:][0] | s[:][:][0] |
中间的第二层 | s[1] | s[:][3] | s[:][:][4] |
最下面第三层 | s[2] | s[:][5] | s[:][:][6] |
读取 屏幕垂直面
读取和屏幕垂直的三个面,代码如下:
读取对象 | 方法 |
---|---|
最左边第一层 | s[:,0] |
中间的第二层 | s[:,1] |
最右边第三层 | s[:,2] |
读取 屏幕平行面
读取屏幕平行的三个面,方法如下:
读取对象 | 方法 |
---|---|
最内测第一层 | s[:,:,0] |
中间的第二层 | s[:,:,1] |
最外侧第三层 | s[:,:,2] |
这个面就比较特殊了,看下图对比:虽然它的数据看起来也是正常的。但是对它取0
的时候(想拿到某个边),显示的数据是竖排的,而不是传统的横排的。
读取某条边
先找到对应边所在的平面,每条边都存在于某个平面上,这个平面又体现为二维数组。这条边或者为行,或者为列。必定在某一行上面是作为行存在,读取它即可。
读取对象 | 方法 |
---|---|
最外侧顶部第一条边,0/1/2 | s[:][:][0][0] |
最内侧顶部第一条边,0/3/6 | s[:,:,0][0] |
最中间的平行于屏幕的轴心边,10/13/16 | s[:,:,1][14] |
最外侧平行于屏幕的最下边,20/23/26 | s[:,:,2][15] |
这里需要注意的是:l2
数据看起来正常,console
里输出值是[0 3 6]
,但是通过屏幕平行面访问到的边,表现形式上变成了竖排。【究竟是哪个属性控制的呢?】
到目前为止,所有拿到的数据类型都是ndarray
,在线的层级上再试图拿点的数据的时候,可能会碰到int32 not supported
的情况,实际上并没有出错,只是因为pycharm
的data
可视化这边,只支持二维数组。
读取某个点
这里就以最中心原点数字13为例,进行处理。
读取中心点 | 代码 |
---|---|
方法一 | s[:][:][18][1][19] |
方法二 | s[:][20][1][21] |
方法三 | s[1][22][1] |
方法四 | s[:,1][23][1] |
方法五 | s[:,:,1][24][1] |
方法N | ... |
结束语
更多python
相关文章,请参考苏南大叔的文章合集:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。