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实现批量修改文件名实例
Jul 08 Python
python实现逻辑回归的方法示例
May 02 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
Python实现KNN邻近算法
Jan 28 Python
python验证码识别实例代码
Feb 03 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
对python中dict和json的区别详解
Dec 18 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
Python 多线程共享变量的实现示例
Apr 17 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
Python基础之变量的相关知识总结
Jun 23 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循环获取GET和POST值的代码
2008/04/09 PHP
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
mysql数据库差异比较的PHP代码
2012/02/05 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Django app配置多个数据库代码实例
2019/12/17 Python
django ajax发送post请求的两种方法
2020/01/05 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
师范学院教师自荐书
2014/01/31 职场文书
矿泉水广告词
2014/03/20 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
大学四年个人总结
2015/03/03 职场文书
基层党建工作简报
2015/07/21 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
PO模式在selenium自动化测试框架的优势
2022/03/20 Python