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实现线程池代码分享
Jun 21 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
浅述python2与python3的简单区别
Sep 19 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
python实现按行分割文件
Jul 22 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
如何解决安装python3.6.1失败
Jul 01 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
浅析pandas随机排列与随机抽样
Jan 22 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实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
Vue3为什么这么快
2020/09/23 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
Python开发编码规范
2006/09/08 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Linux下多个Python版本安装教程
2018/08/15 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python 3.8 新功能全解
2019/07/25 Python
python判断元素是否存在的实例方法
2020/09/24 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
小学生三分钟演讲稿
2014/08/18 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python