关于数据分析:Python数据分析-Numpy与高维数组操作

21次阅读

共计 1497 个字符,预计需要花费 4 分钟才能阅读完成。

作者:韩信子 @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 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

正文完
 0