前言

在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=?)实例进行说明相关推荐

  1. 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等操作,心中真 ...

  2. Python之numpy函数

    ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.numpy概述 1.numpy简介 2.nump ...

  3. Python中np.sum()对axis的个人理解,超详细

    你们讨论的axis=0和1并不是简单的行和列,axis=0表示的是第一个维度,在第一个维度上的元素间进行求和.比较大小,axis=1表示的是第二个维度,在第二个维度上的元素间进行求和.比较大小.一个维 ...

  4. 【python】详解numpy库与pandas库axis=0,axis= 1轴的用法

    对数据进行操作时,经常需要在横轴方向或者数轴方向对数据进行操作,这时需要设定参数axis的值: axis = 0 代表对横轴操作,也就是第0轴: axis = 1 代表对纵轴操作,也就是第1轴: nu ...

  5. Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意思?

    Python Pandas的DataFrame对象中轴的意义,axis=0 或者axis=1代表什么意义? 通常来说:axis = 0代表行, axis=1代表列. 一.从删除操作来看axis: 举个 ...

  6. python中的axis=0和1代表什么

    python中的axis=0和1代表什么 之前一直很疑惑axis=0和axis=1到底什么时候代表按行操作.什么时候是按列操作.记得在R中也有类似的问题(0代表行.1代表列). 在(caiqingfe ...

  7. python 空数组_从零开始学python之numpy

    Numpy是python中一个常用的库,其支持大量的维度数据与矩阵运算,也拥有针对数据运算的数学函数库,用于独特的数组存储方式及对应的处理方法.一般用以下方式导入: import numpy as n ...

  8. Python中numpy数组的拼接、合并

    转载 https://blog.csdn.net/qq_39516859/article/details/80666070?utm_source=blogxgwz1 Python中numpy数组的合并 ...

  9. 【Python】Numpy中对向量、矩阵的使用

    在下面的代码里面,我们利用numpy和scipy做了很多工作,每一行都有注释,讲解了对应的向量/矩阵操作. 归纳一下,下面的代码主要做了这些事: 创建一个向量 创建一个矩阵 创建一个稀疏矩阵 选择元素 ...

  10. [转载] Python之Numpy模块中的方法详解

    参考链接: Python中的numpy.diag_indices Numpy(Numerical Python)是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等,其提供最核心类型 ...

最新文章

  1. tp数组转为json_数据存储—JSON
  2. Ext.form.TextArea文本区
  3. EOS智能合约授权限制和数据存储
  4. php防止cc攻击代码,防cc攻击PHP防CC攻击实现代码
  5. JavaFX UI控件教程(九)之Text Field
  6. 内存泄露部分检测工具
  7. python求奇数的乘积_Python中的推导式使用详解
  8. 以小窥大,从一盏路灯看亿万物联网之路
  9. Web前端笔记(1)
  10. 休息【归并排序】【模拟】
  11. weblogic安装以及异常解决方法【转】
  12. html5 网易公开课,麻省理工学院公开课:单变量微积分习题课
  13. android用户界面组件都是放置在,Android开发工程师第十章 节 用户界面高级组件.ppt...
  14. 安卓搭建http文件服务器,如何在安卓上搭建http服务器
  15. 关于《机器学习决策树导出图片、PDF支持中文》解决办法
  16. 模型选择的方法——正则化与交叉验证
  17. 产业与团队合作 Intel共同拓展IoT / AI科技新版图
  18. python 通登录银行_Python3实现简单的银行账户登录系统实例
  19. PostGreSql判断字符串中含中⽂⽅法
  20. 西南计算机维修技术0240,2017年秋西南大学继续教育0240计算机维修技术

热门文章

  1. Android基础课程:第三方视频播放器(播放网络资源)
  2. OpenGL绘制三维彩色立方体并实现自动旋转
  3. strtolower()和strtoupper()中文乱码问题
  4. 1102: 韩信点兵
  5. 叶俊——“新零售·新未来”米友圈第九届全国精英总裁班授课圆满落幕
  6. 华为往事(十八)--CC08 STP:华为抢占制高点
  7. 代码随想录第十四天 二叉树基础 LeetCode 144、145、94
  8. android studio 免费实现聊天视频功能
  9. python base64解密
  10. uni.getUserProfile获取的微信昵称是微信用户,头像获取的是默认头像