Python之NumPy(axis=0/1/2...)的透彻理解

2023-11-16

前言

在numpy的使用中,对axis的使用总是会产生疑问,如np.sum函数,在多维情况下,axis不同的取值应该做怎样的运算呢?返回的是什么形状的数组呢?在网上查了很多资料,总是似懂非懂,查阅了官方文件,以及多次试验后,我总结出一种能深入透彻理解axis用法的说明,配合着np.sum例子。希望大家再也不会对axis的使用产生困惑,即使在高维情况下也信手拈来。

numpy中axis取值的说明

首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维数越高,则axis可取的值越大,数组n维时,axis=0,1,…,n。为了方便下面的理解,我们这样看待:在numpy中数组都有着[]标记,则axis=0对应着最外层的[],axis=1对应第二外层的[],以此类推,axis=n对应第n外层的[]。 
下面开始从axis=0,axis=1这两个例子开始,深入透彻的理解numpy中axis的用法。

axis = 0表示对最外层[]里的最大单位块做块与块之间的运算,同时移除最外层[]

a= np.array([1,2,3])    
a.sum(axis = 0)
>>>6

因为只有一层[],所以直接对这一层里的最大单位快1,2,3做运算; 
做完加法后本应是[6],但是移除最外层[]后,[]不存在了,所以返回的是6。

a= np.array([[1,2],[3,4]])  
a.sum(axis = 0)
>>>array([4, 6])

有两层[],最外层[]里的最大单位块分别为[1,2],[3,4],对这两个单位块做块与块之间的运算,[1,2]+[3,4] = [4, 6]; 
做完加法后本应是[[4, 6]],但是移除最外层[]后,原来的两层[]变成一层[],所以返回结果为 [4, 6]。

np.array([[[1,2],[3,4]],[[11,12],[13,14]]])
a.sum(axis = 0)
>>>array([[12, 14], [16, 18]])

有三层[],最外层[]里的最大单位块分别为[[1,2],[3,4]],[[11,12],[13,14]],对这两个单位块做块与块之间的运算,[[1,2],[3,4]] + [[11,12],[13,14]] = [[12, 14], [16, 18]]; 
做完加法后本应是[[[12, 14], [16, 18]]],但是移除最外层[]后,原来的三层[]变成两层[],所以返回结果为[[12, 14], [16, 18]];

axis= 1表示对第二外层[]里的最大单位块做块与块之间的运算,同时移除第二外层[]:

a= np.array([[1,2],[3,4]])  
a.sum(axis = 1)
>>>array([3, 7])

有两层[],第二外层[]里的最大单位块有两组(因为有两个第二外层[]),第一组是1,2,第二组是3,4,分别对这两个单位块做块与块之间的运算,第一组结果为1+2=3,第二组结果为3+4=7; 
做完加法后本应是[[3],[7]],但是移除第二外层[]后,原来的两层[]变成一层[],所以返回结果为[3, 7]。

np.array([[[1,2],[3,4]],[[11,12],[13,14]]])
a.sum(axis = 1)
>>>array([[ 4,  6], [24, 26]])

有三层[],第二外层[]里的最大单位块有两组(因为有两个第二外层[]),第一组是[1,2],[3,4],第二组是[11,12],[13,14],分别对这两个单位块做块与块之间的运算,第一组结果为[1,2]+[3,4] = [ 4, 6],第二组结果为[11,12]+[13,14] = [24, 26] 
做完加法后本应是[[[ 4, 6]], [[24, 26]]],但是移除第二外层[]后,原来的三层[]变成两层[],所以返回结果为[[ 4, 6], [24, 26]]

axis = 3,4,5也如此分析。

看懂了这些说明,相信你对axis已经有了深入的理解,以后再也不用怕高维数组关于axis的运算了!
--------------------- 
作者:sky_kkk 
来源:https://blog.csdn.net/sky_kkk/article/details/79725646 
版权声明:本文为博主sky_kkk原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之NumPy(axis=0/1/2...)的透彻理解 的相关文章

随机推荐

  • smardaten实战丨谁说无代码不能开发出漂亮的门户首页?

    一 需求背景 门户首页对于一个公司或组织来说是一个极其重要的网站页面 它可以作为访问者了解和获取相关信息的入口 同时也是展示品牌形象和吸引目标受众的重要工具 开发一个门户首页需要开发团队在向访问者展示关于公司或组织基本信息的基础上 使用多种
  • 【B类比赛】 第十一届蓝桥杯 省国赛经历

    Now 拿起键盘写下这段话的时候 已经是第12届蓝桥杯省赛前的一天了 2021 4 17 距离上次蓝桥杯省赛正好6个月了 如今的我仍在ACM里 这半年经历了挺多事情 退ACM已经势在必行 且行且珍惜吧 未来的我将会接触一些新的领域 在算法之
  • 进程间通信之共享内存分析

    零拷贝技术 https strikefreedom top linux io and zero copy 一 内存映射和共享内存的区别 1 1 内存映射之mmap函数 将一个文件或者其它对象映射到进程的地址空间 实现文件磁盘地址和进程虚拟地
  • iView中Form表单的验证(自定义验证、动态增减项验证)

    记录 iView中Form表单的验证 自定义验证 动态增减项验证
  • java.sql.SQLException: Network error IOException: Connection refused

    发生原因的问题是 数据库从服务器换到本地 项目启动就报错 1 程序和功能 启用或关闭Windows功能 2 Telnet客户端打个勾 3 win R cmd 输入 services msc 找到SQL SERVER的服务 重启一下 4 重启
  • SQLserver2008 R2连接服务器异常(error:26-定位指定的服务器/实例时出错)

    SQLserver2008 R2连接服务器异常 error 26 定位指定的服务器 实例时出错 笔者的系统环境 Windows7旗舰版安装VMware workstations pro后在Windows8 1专业版操作系统上安装SQLser
  • C语言实现抽签小功能

    相信大家都玩过微信小程序抽签的经历 现在我们就用C语言实现简单的抽签函数 简单方便 思考难度不大 各位试试吧 include
  • css line height无效,为什么设置span的line-height属性无效?

    不知道为什么span 中line height设置大小小于18px的话都是无效的 18之后才看到效果 不知道是怎么回事求大佬解答一下 http codepen io 1206189299 直接给答案 给 span 设置 display in
  • Cannot change version of project facet Dynamic Web Module to 2.5 错误

    问题 新建maven webapp项目后 出现Cannot change version of project facet Dynamic web module to 3 0或者2 5 分析 使用Maven新建Web项目时使用的是Artif
  • 和数集团聚焦区块链人才培养推动数字经济场景落地

    随着互联网时代的不断推进 全球经济结构已呈现多元化形态 尤其是大数据 云计算 人工智能等技术革新进步 数字经济迎来了快速发展的时期 从更深层次方面理解 数字经济也契合创新 协调 绿色 开放 共享的新发展理念 为我们国家经济社会发展注入了新动
  • Hive(八)Hive的Shell操作与压缩存储

    一 Hive的命令行 1 Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell set key value Use this
  • node.js如何封装一个接口

    用到的应用 1 webstorm 2 Navicat for MySQL 3 postman 一 使用express创建项目 1 npm install express generator g 2 express myapp 二 使用Nav
  • Openwrt下ipk包的安装、卸载与更新

    一 环境说明 Openwrt version 17 01 4 Linux version 4 4 92 二 安装ipk 将编译好的 ipk传到开发板上 使用命令 opkg install xxxxx ipk 安装成功的界面如下 再进入 li
  • 【软件工程期末复习内容】

    前言 时不可以苟遇 道不可以虚行 一 软件工程的概念 软件是计算机系统运行的 指令 数据 和 相关文档 的集合 即软件等于程序 数据 加上文档 程序 是事先按照预定功能性能等要求设计和编写的指令序列 数据 是使程序正常处理信息的数据结构及信
  • 远程计算机内部错误,Win10系统远程桌面连接出现内部错误怎么办?

    Win10系统远程桌面连接出现内部错误该怎么办 大家在使用Win10系统的时候总是会出现这样那样的问题 Win 10 远程桌面连接偶尔提示 出现了内部错误 刚刚明明还好好的 有时连接久了会突然断开 提示出现了内部错误 我们遇到这个问题该怎么
  • 生态系统过程模型

    生态系统过程模型 根据生态系统的生理生态学特性 结合影响生态系统过程的观测指标 提出的能够反映生态系统过程的机制模型 统计模型 stochasticmodel statisticmodel probabilitymodel 指以概率论为基础
  • qt 动态库的创建和使用教程(step by step)

    一般大型项目中 会将实现特定功能的函数或类 封装成链接库 供应用程序代码调用 下面我将一步步教你如何在qt 中创建动态库 并使用它 目录 创建多子目录项目 创建动态链接库 编辑链接库内容 创建应用工程并连接动态链接库 创建多子目录项目 首先
  • React基础入门

    系统学习React 一 基础知识 邂逅React开发 React系列一 核心JSX语法一 React系列二 核心JSX语法二 React系列三 阶段案例练习 React系列四 React脚手架 React系列五 组件化开发 一 React系
  • mysql8.0.30用户与权限管理

    文章目录 用户管理 登录mysql服务器 创建用户 修改用户 删除用户 查看用户 修改用户密码 权限管理 查看权限 授予权限的原则 授予权限 查看权限 收回权限 查看user 信息表结构和信息 db表 其他表信息 角色管理 创建角色 给角色
  • Python之NumPy(axis=0/1/2...)的透彻理解

    前言 在numpy的使用中 对axis的使用总是会产生疑问 如np sum函数 在多维情况下 axis不同的取值应该做怎样的运算呢 返回的是什么形状的数组呢 在网上查了很多资料 总是似懂非懂 查阅了官方文件 以及多次试验后 我总结出一种能深