作者:韩信子 @ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/33
本文地址:http://www.showmeai.tech/article-detail/144
申明:版权所有,转载请分割平台与作者并注明出处
n 维数组是 NumPy 的外围概念,大部分数据的操作都是基于 n 维数组实现的。本系列内容笼罩到 1 维数组操作、2 维数组操作、3 维数组操作方法,本篇解说 Numpy 与 3 维、更高维数组的操作。
有时候咱们会应用到 3 维或者更高维的 NumPy 数组(比方计算机视觉的利用中),通过重塑 1 维向量或转换嵌套 Python 列表来创立 3 维数组时,索引别离对应 (z,y,x)。索引 z 是立体编号,(y,x) 坐标在该立体上挪动,如下图所示:
通过上述索引程序,能够不便的保留灰度图像,a[i]示意第 i 个图像。
但这样的索引程序并不具备广泛性,例如在解决 RGB 图像时,通常应用 (y,x,z) 程序:首先是两个像素坐标,而后才是色彩坐标(Matplotlib 中的 RGB,OpenCV 中的 BGR):
这样能够不便地定位特定像素,如 a[i,j]
给出像素 (i,j) 的 RGB 元组。
因而,几何形态的创立理论取决于你对域的约定:
显然,hstack,vstack 或 dstack 之类的 NumPy 函数并不一定满足这些约定,其默认的索引程序是(y,x,z),RGB 图像程序如下:
如果数据不是这样的布局,应用 concatenate 命令能够不便的重叠图像,并通过 axis 参数提供索引号:
如果不思考轴数,能够将数组转换 hstack 和相应模式:
这种转换十分不便,该过程只是混合索引的程序重排,并没有理论的复制操作。
通过混合索引程序可实现数组转置,把握该办法将加深你对 3 维数据的理解。依据确定的轴程序,转置数组立体的命令有所不同:对于通用数组,替换索引 1 和 2,对于 RGB 图像替换 0 和 1:
留神,transpose(a.T)
的默认轴参数会颠倒索引程序,这不同于上述述两种索引程序。
播送机制同样实用多维数组,更多详细信息可参阅笔记“NumPy 中的播送”。
最初介绍 einsum(Einstein summation)
函数,这将使你在解决多维数组时防止很多 Python 循环,代码更为简洁:
该函数对反复索引的数组求和。在个别状况下,应用 np.tensordot(a,b,axis=1)
就能够,但在更简单的状况下,einsum 速度更快,读写更容易。
材料与代码下载
本教程系列的代码能够在 ShowMeAI 对应的 github 中下载,可本地 python 环境运行,能迷信上网的宝宝也能够间接借助 google colab 一键运行与交互操作学习哦!
本系列教程波及的速查表能够在以下地址下载获取:
- NumPy 速查表
- Pandas 速查表
- Matplotlib 速查表
- Seaborn 速查表
拓展参考资料
- NumPy 教程
- Python NumPy 教程
ShowMeAI 相干文章举荐
- 数据分析介绍
- 数据分析思维
- 数据分析的数学根底
- 业务认知与数据初探
- 数据荡涤与预处理
- 业务剖析与数据挖掘
- 数据分析工具地图
- 统计与数据科学计算工具库 Numpy 介绍
- Numpy 与 1 维数组操作
- Numpy 与 2 维数组操作
- Numpy 与高维数组操作
- 数据分析工具库 Pandas 介绍
- 图解 Pandas 外围操作函数大全
- 图解 Pandas 数据变换高级函数
- Pandas 数据分组与操作
- 数据可视化准则与办法
- 基于 Pandas 的数据可视化
- seaborn 工具与数据可视化
ShowMeAI 系列教程举荐
- 图解 Python 编程:从入门到精通系列教程
- 图解数据分析:从入门到精通系列教程
- 图解 AI 数学根底:从入门到精通系列教程
- 图解大数据技术:从入门到精通系列教程