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构成
Nov 04 Python
Python上下文管理器和with块详解
Sep 09 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
django中的图片验证码功能
Sep 18 Python
python 两个数据库postgresql对比
Oct 21 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
python3 webp转gif格式的实现示例
Dec 10 Python
python 5个顶级异步框架推荐
Sep 09 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
pytorch中的numel函数用法说明
May 13 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
再说下636单管机
2021/03/02 无线电
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
JS匀速运动演示示例代码
2013/11/26 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
node 使用 async 控制并发的方法
2018/05/07 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
2019年Java 最常见的 面试题
2016/10/19 面试题
银行柜员应聘推荐信范文
2013/11/24 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
mysql事务对效率的影响分析总结
2021/10/24 MySQL
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS