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的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
python中set()函数简介及实例解析
Jan 09 Python
Python实现的简单排列组合算法示例
Jul 04 Python
python实现随机漫步方法和原理
Jun 10 Python
Python坐标线性插值应用实现
Nov 13 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
python 数据分析实现长宽格式的转换
May 18 Python
Python requests上传文件实现步骤
Sep 15 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
jquery 使用简明教程
2014/03/05 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
介绍JavaScript的一个微型模版
2015/06/24 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
讲解Python中的递归函数
2015/04/27 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
python多线程方式执行多个bat代码
2016/06/07 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python 文件处理注意事项总结
2017/04/10 Python
Python numpy 点数组去重的实例
2018/04/18 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
python3实现字符串操作的实例代码
2019/04/16 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
优秀大学生的自我评价
2014/01/16 职场文书
酒店营销策划方案
2014/02/07 职场文书
中学生寄语大全
2014/04/03 职场文书
协会周年庆活动方案
2014/08/26 职场文书
银行稽核岗位职责
2015/04/13 职场文书
雨中的树观后感
2015/06/03 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript