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入门教程
Feb 08 Python
Python while 循环使用的简单实例
Jun 08 Python
JPype实现在python中调用JAVA的实例
Jul 19 Python
Python3多线程操作简单示例
May 22 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
python selenium xpath定位操作
Sep 01 Python
Python移位密码、仿射变换解密实例代码
Jun 27 Python
Python Pandas解析读写 CSV 文件
Apr 11 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
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
php中autoload的用法总结
2013/11/08 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
纯javascript版日历控件
2016/11/24 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
Delphi CS笔试题
2014/01/04 面试题
书法大赛策划方案
2014/06/04 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
介绍信模板
2015/01/31 职场文书
西安大雁塔导游词
2015/02/10 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
2015最新民情日记范文
2015/06/26 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
中学教代会开幕词
2016/03/04 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS