图解数据分析(11) | Numpy – 与高维数组操作(数据科学家入门·完结)

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

n维数组是NumPy的核心概念,大部分数据的操作都是基于n维数组完成的。本系列内容覆盖到1维数组操作2维数组操作3维数组操作方法,本篇讲解Numpy与3维、更高维数组的操作。

有时候我们会使用到3维或者更高维的NumPy数组(比如计算机视觉的应用中),通过重塑1维向量或转换嵌套Python列表来创建3维数组时,索引分别对应(z,y,x)。索引z是平面编号,(y,x)坐标在该平面上移动,如下图所示:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

通过上述索引顺序,可以方便的保留灰度图像,a[i]表示第i个图像。

但这样的索引顺序并不具有广泛性,例如在处理RGB图像时,通常使用(y,x,z)顺序:首先是两个像素坐标,然后才是颜色坐标(Matplotlib中的RGB,OpenCV中的BGR):

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

这样可以方便地定位特定像素,如 a[i,j]给出像素(i,j)的RGB元组。

因此,几何形状的创建实际取决于你对域的约定:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

显然,hstack,vstack或dstack之类的NumPy函数并不一定满足这些约定,其默认的索引顺序是(y,x,z),RGB图像顺序如下:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

如果数据不是这样的布局,使用concatenate命令可以方便的堆叠图像,并通过axis参数提供索引号:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

如果不考虑轴数,可以将数组转换hstack和相应形式:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

这种转换非常方便,该过程只是混合索引的顺序重排,并没有实际的复制操作。

通过混合索引顺序可实现数组转置,掌握该方法将加深你对3维数据的了解。根据确定的轴顺序,转置数组平面的命令有所不同:对于通用数组,交换索引1和2,对于RGB图像交换0和1:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

注意, transpose(a.T)的默认轴参数会颠倒索引顺序,这不同于上述述两种索引顺序。

广播机制同样适用多维数组,更多详细信息可参阅笔记” NumPy中的广播”。

最后介绍 einsum(Einstein summation)函数,这将使你在处理多维数组时避免很多Python循环,代码更为简洁:

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

该函数对重复索引的数组求和。在一般情况下,使用 np.tensordot(a,b,axis=1)就可以,但在更复杂的情况下,einsum速度更快,读写更容易。

; 一键运行所有代码

图解数据分析系列 配套的所有代码,可前往ShowMeAI 官方 GitHub,下载后即可在本地 Python 环境中运行。能访问 Google 的宝宝也可以直接借助 Google Colab一键运行与交互学习!

下载数据分析速查表

Awesome cheatsheets | ShowMeAI速查表大全 系列包含『编程语言』『AI技能知识』『数据科学工具库』『AI垂直领域工具库』四个板块,追平到工具库当前最新版本,并跑通了所有代码。点击 官网GitHub 获取~

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

👇 数据分析相关速查表(部分)

内容速查表(部分)Github代码

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

; 拓展参考资料

ShowMeAI 图解数据分析系列推荐(数据科学家入门)

图解数据分析(11) | Numpy - 与高维数组操作(数据科学家入门·完结)

Original: https://blog.csdn.net/ShowMeAI/article/details/123134962
Author: ShowMeAI
Title: 图解数据分析(11) | Numpy – 与高维数组操作(数据科学家入门·完结)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760460/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python少儿入门2

    Python入门——Pygame 大量的代码并不利于少儿学习,使用Pygame学习是一个非常好的选择。 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 大量的代码…

    Python 2023年9月24日
    038
  • 读 RocketMQ 源码,学习并发编程三大神器

    笔者是 RocketMQ 的忠实粉丝,在阅读源码的过程中,学习到了很多编程技巧。 这篇文章,笔者结合 RocketMQ 源码,分享并发编程三大神器的相关知识点。 1 CountDo…

    Python 2023年10月14日
    071
  • pandas|DataFrame.append

    文章目录 * – + 1. append dict + 2. append series + 3. append list + 4. append array + 5….

    Python 2023年8月7日
    061
  • Django环境部署

    Django 大体学习的点 一、安装Django pip install Django 二、创建项目 Django-admin startproject (name) 三、启动项目…

    Python 2023年8月5日
    045
  • 继GitHub的Copilot收费后,亚马逊推出了 CodeWhisperer,感觉不错哟!

    Copilot 是 Github 推出的一款人工智能编程助手,推出仅一年就受到大量开发者的追捧(据官方统计有 120 万用户)。然而,自 2022 年 6 月起,它改为了付费订阅模…

    Python 2023年10月21日
    050
  • conda 教程

    对于一个做python开发的人员来说相信conda都是比较了解。由于python 是一个非常依赖环境的编程语言。这些环境包括 python 版本,以及开源模块。为了方便管理pyth…

    Python 2023年9月8日
    039
  • Centos8上安装Mysql8.X

    一、下载Mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 二、将压缩包通过ftp软件服务器的目标位置:并解压 1、我的是放在:/r…

    Python 2023年6月9日
    090
  • 自动驾驶–定位技术

    整理自百度技术培训中心课程 为什么无人车需要精确的定位系统 在地下车库实现自动泊车的一个非常关键的技术是什么呢?那就是定位技术。 为什么无人车需要一个精确的定位系统。为什么无人车需…

    Python 2023年11月8日
    042
  • 执行 java -jar xxx.jar 的时候底层到底做了什么?

    大家都知道我们常用的 SpringBoot 项目最终在线上运行的时候都是通过启动 java -jar xxx.jar 命令来运行的。 那你有没有想过一个问题,那就是当我们执行 ja…

    Python 2023年11月9日
    051
  • 记录在conda创建虚拟环境遇到的问题

    为什么要创建虚拟环境? 我们知道很多框架所需要不同的版本库,不可能今天用这个版本,明天把这个库换成另外一个版本 按照正常流程,首先如果没有添加国内的源,下载过程中会非常慢。所以先添…

    Python 2023年9月7日
    039
  • 相关性分析热力图(Python&Matlab代码实现)

    目录 1 热力图 1.1 简介 1.2 语法 2 算例1(Python代码实现) 2.1 算例 2.2 Python代码 2.3 运行结果 3 算例2(Python代码实现) 4 …

    Python 2023年8月2日
    068
  • 使用 oh-my-posh 美化 windows terminal,让其接近oh-my-zsh

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月10日
    088
  • python开发工具总结

    TkinterPython默认的图形界面接口。Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。 Py…

    Python 2023年9月19日
    033
  • 解决pytorch检测不到cuda的问题/pytorch找不到GPU

    检测代码: import torch device = torch.device("cuda" if torch.cuda.is_available() els…

    Python 2023年8月3日
    0243
  • centos7上部署一个flask博客应用遇到的坑

    这几天搞了台云主机,寻思着既然买了,也不能让它闲着,就想部署个博客到上面,但是由于我好久没搞这块了,业务都快忘干净了,又踩了一遍坑。主要还是python版本和uwsgi的问题。 问…

    Python 2023年8月11日
    052
  • 基于Java+Spring+Vue+elementUI大学生求职招聘系统详细设计实现

    博主介绍: ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技…

    Python 2023年9月29日
    044
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球