NumPy中的维度Axis详解


Posted in Python onNovember 26, 2019

浅谈NumPy中的维度Axis

NumPy中的维度是一个很重要的概念,很多函数的参数都需要给定维度Axis,如何直观的理解维度呢?我们首先以二维数组为例进行说明,然后推广到多维数组。

(有人将ndim属性叫维度,将axis叫轴,我还是习惯将axis称之为维度,axis=0称为第一个维度)

二维数组的列子

下面是一个二维数组的列子:

In [1]: import numpy as np

In [2]: x = np.random.randint(0, 9, (2, 3))

In [3]: x
Out[3]:
array([[0, 8, 6],
    [1, 2, 1]])

In [4]: x.ndim
Out[4]: 2

In [5]: x.shape
Out[5]: (2, 3)

In [6]: x[0]
Out[6]: array([0, 8, 6])

In [7]: x[:, 0]
Out[7]: array([0, 1])

In [8]: x.sum(axis=0)
Out[8]: array([ 1, 10, 7])

In [9]: x.sum(axis=1)
Out[9]: array([14, 4])

In [10]: x[0] + x[1]
Out[10]: array([ 1, 10, 7])

In [11]: x[:, 0] + x[:, 1] + x[:, 2]
Out[11]: array([14, 4])

看上面这个例子,x是一个2行3列的数组,所以x是一个二维数组。

从第6和第7个输入输出,我们可以肯定地说"对于二维数组,第一维指的是行,第二维指的是列"。

我们通过sum求和函数,探究一下x的第一维和第二维的意义?从第8个和第9个输入输出,我们可以看到对于参数axis=0,其结果是数组列的和;而对于参数axis=1,其参数是数组行的和。

对于axis=0第一个维度求和,不是将第一维度(行)中的所有元素相加,而是沿着第一个维度,将对应其他维度(列)的数据相加,分解开来就是第10个输入输出。同理,对于axis=1,是沿着列,将行中的元素相加。

NumPy中对于维度的操作都是以类似这样的逻辑操作的。

多维数组

对于多维数组我们如何准确区分维度呢?下面以图示进行说明:

NumPy中的维度Axis详解

所以,我的结论就是:在概念上维度是从整体到局部看的,最外围的是第一个维度,然后依次往里,最内部的就是最后一维。

下面我们用代码验证一下上面的结论:

In [19]: x = np.random.randint(0, 9, (2, 3, 4))

In [20]: x
Out[20]:
array([[[0, 7, 5, 5],
    [6, 3, 1, 3],
    [7, 5, 3, 4]],

    [[8, 1, 4, 6],
    [8, 1, 4, 8],
    [3, 0, 8, 2]]])

In [21]: x[0]
Out[21]:
array([[0, 7, 5, 5],
    [6, 3, 1, 3],
    [7, 5, 3, 4]])

In [22]: x[:, 0, :]
Out[22]:
array([[0, 7, 5, 5],
    [8, 1, 4, 6]])

可以看到,第21个输入输出取到的是第一维的第一个元素,第22个输入输出取到的是第二维的第一个元素。大家可以细细体味一下!

以上这篇(标题)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算圆周长、面积、球体体积并画出圆
Apr 08 Python
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
python实现俄罗斯方块
Jun 26 Python
python GUI实现小球满屏乱跑效果
May 09 Python
详解用python写一个抽奖程序
May 10 Python
把vgg-face.mat权重迁移到pytorch模型示例
Dec 27 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
Python通过format函数格式化显示值
Oct 17 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 Python
python列表推导式操作解析
Nov 26 #Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 #Python
简单了解python数组的基本操作
Nov 26 #Python
python实现图片插入文字
Nov 26 #Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 #Python
python向图片里添加文字
Nov 26 #Python
python 遍历pd.Series的index和value
Nov 26 #Python
You might like
PHP初学者头疼问题总结
2006/10/09 PHP
PHP 开发工具
2006/12/06 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
node 版本切换的实现
2020/02/02 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
python样条插值的实现代码
2018/12/17 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python实现对adb命令封装
2020/03/06 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
美国留学经济担保书
2014/05/20 职场文书
端午节演讲稿
2014/05/23 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
公司出差管理制度范本
2015/08/05 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL