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实现中文转换url编码的方法
Jun 14 Python
python实现获取Ip归属地等信息
Aug 27 Python
python使用fork实现守护进程的方法
Nov 16 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
Python地图绘制实操详解
Mar 04 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
fgetcvs在linux的问题
2012/01/15 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python递归函数实例讲解
2019/02/27 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python实现图片素描效果
2020/09/26 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
三维科技面试题
2013/07/27 面试题
求职简历中个人的自我评价
2013/12/25 职场文书
铁路安全事故反思
2014/04/26 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
Python入门学习之类的相关知识总结
2021/05/25 Python
python3 字符串str和bytes相互转换
2022/03/23 Python
利用Python实现模拟登录知乎
2022/05/25 Python