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通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
介绍Python中的一些高级编程技巧
Apr 02 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
Python中Numpy ndarray的使用详解
May 24 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
Python list和str互转的实现示例
Nov 16 Python
Django缓存Cache使用详解
Nov 30 Python
python缺失值填充方法示例代码
Dec 24 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
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
python实现公司年会抽奖程序
2019/01/22 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
《盲人摸象》教学反思
2014/02/16 职场文书
优质服务活动实施方案
2014/05/02 职场文书
python析构函数用法及注意事项
2021/06/22 Python
golang 语言中错误处理机制
2021/08/30 Golang
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android