Python之NumPy(axis=0/1/2...)的透彻理解——通过np.sum(axis=?)实例进行说明
前言
在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])
a.sum(axis = 1)
>>>ValueError: 'axis' entry is out of bounds
因为只有一层[],axis取值只有一个,为0.
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的运算了!
Python之NumPy(axis=0/1/2...)的透彻理解——通过np.sum(axis=?)实例进行说明相关推荐
- Python:一文让你彻底理解numpy中axis=-1/0/1/2... [实例讲解:np.argmax(axis= -1 0 1 2) np.sum(aixs= -1 0 1 2)]
前言 接触python有一段时间了,但总有一道坎在心中挥之不去,那就是Numpy模块中的axis=-1/0/1/2...,每每见到axis=-1.axis=0.axis=1.axis=2等操作,心中真 ...
- Python之numpy函数
活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.numpy概述 1.numpy简介 2.nump ...
- Python中np.sum()对axis的个人理解,超详细
你们讨论的axis=0和1并不是简单的行和列,axis=0表示的是第一个维度,在第一个维度上的元素间进行求和.比较大小,axis=1表示的是第二个维度,在第二个维度上的元素间进行求和.比较大小.一个维 ...
- 【python】详解numpy库与pandas库axis=0,axis= 1轴的用法
对数据进行操作时,经常需要在横轴方向或者数轴方向对数据进行操作,这时需要设定参数axis的值: axis = 0 代表对横轴操作,也就是第0轴: axis = 1 代表对纵轴操作,也就是第1轴: nu ...
- Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意思?
Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意义? 通常来说:axis = 0代表行, axis=1代表列. 一.从删除操作来看axis: 举个 ...
- python中的axis=0和1代表什么
python中的axis=0和1代表什么 之前一直很疑惑axis=0和axis=1到底什么时候代表按行操作.什么时候是按列操作.记得在R中也有类似的问题(0代表行.1代表列). 在(caiqingfe ...
- python 空数组_从零开始学python之numpy
Numpy是python中一个常用的库,其支持大量的维度数据与矩阵运算,也拥有针对数据运算的数学函数库,用于独特的数组存储方式及对应的处理方法.一般用以下方式导入: import numpy as n ...
- Python中numpy数组的拼接、合并
转载 https://blog.csdn.net/qq_39516859/article/details/80666070?utm_source=blogxgwz1 Python中numpy数组的合并 ...
- 【Python】Numpy中对向量、矩阵的使用
在下面的代码里面,我们利用numpy和scipy做了很多工作,每一行都有注释,讲解了对应的向量/矩阵操作. 归纳一下,下面的代码主要做了这些事: 创建一个向量 创建一个矩阵 创建一个稀疏矩阵 选择元素 ...
- [转载] Python之Numpy模块中的方法详解
参考链接: Python中的numpy.diag_indices Numpy(Numerical Python)是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等,其提供最核心类型 ...
最新文章
- tp数组转为json_数据存储—JSON
- Ext.form.TextArea文本区
- EOS智能合约授权限制和数据存储
- php防止cc攻击代码,防cc攻击PHP防CC攻击实现代码
- JavaFX UI控件教程(九)之Text Field
- 内存泄露部分检测工具
- python求奇数的乘积_Python中的推导式使用详解
- 以小窥大,从一盏路灯看亿万物联网之路
- Web前端笔记(1)
- 休息【归并排序】【模拟】
- weblogic安装以及异常解决方法【转】
- html5 网易公开课,麻省理工学院公开课:单变量微积分习题课
- android用户界面组件都是放置在,Android开发工程师第十章 节 用户界面高级组件.ppt...
- 安卓搭建http文件服务器,如何在安卓上搭建http服务器
- 关于《机器学习决策树导出图片、PDF支持中文》解决办法
- 模型选择的方法——正则化与交叉验证
- 产业与团队合作 Intel共同拓展IoT / AI科技新版图
- python 通登录银行_Python3实现简单的银行账户登录系统实例
- PostGreSql判断字符串中含中⽂⽅法
- 西南计算机维修技术0240,2017年秋西南大学继续教育0240计算机维修技术
热门文章
- Android基础课程:第三方视频播放器(播放网络资源)
- OpenGL绘制三维彩色立方体并实现自动旋转
- strtolower()和strtoupper()中文乱码问题
- 1102: 韩信点兵
- 叶俊——“新零售·新未来”米友圈第九届全国精英总裁班授课圆满落幕
- 华为往事(十八)--CC08 STP:华为抢占制高点
- 代码随想录第十四天 二叉树基础 LeetCode 144、145、94
- android studio 免费实现聊天视频功能
- python base64解密
- uni.getUserProfile获取的微信昵称是微信用户,头像获取的是默认头像