对numpy中的transpose和swapaxes函数详解


Posted in Python onAugust 02, 2018

transpose()

这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数。

我们看如下一个numpy的数组:

`arr=np.arange(16).reshape((2,2,4)) 
arr= 
array([[[ 0, 1, 2, 3], 
[ 4, 5, 6, 7]], 
[[ 8, 9, 10, 11], 
[12, 13, 14, 15]]])
`

那么有:

arr.transpose(2,1,0)
array([[[ 0, 8],
  [ 4, 12]],

  [[ 1, 9],
  [ 5, 13]],

  [[ 2, 10],
  [ 6, 14]],

  [[ 3, 11],
  [ 7, 15]]])

为什么会是这样的结果呢,这是因为arr这个数组有三个维度,三个维度的编号对应为(0,1,2),比如这样,我们需要拿到7这个数字,怎么办,肯定需要些三个维度的值,7的第一个维度为0,第二个维度为1,第三个3,所以arr[0,1,3]则拿到了7

arr[0,1,3] #结果就是7

这下应该懂了些吧,好,再回到transpose()这个函数,它里面就是维度的排序,比如我们后面写的transpose(2,1,0),就是把之前第三个维度转为第一个维度,之前的第二个维度不变,之前的第一个维度变为第三个维度,好那么我们继续拿7这个值来说,之前的索引为[0,1,3],按照我们的转换方法,把之前的第三维度变为第一维度,之前的第一维度变为第三维度,那么现在7的索引就是(3,1,0)

同理所有的数组内的数字都是这样变得,这就是transpose()内参数的变化。

理解了上面,再来理解swapaxes()就很简单了,swapaxes接受一对轴编号,其实这里我们叫一对维度编号更好吧,比如:

arr.swapaxes(2,1) #就是将第三个维度和第二个维度交换
array([[[ 0, 4],
  [ 1, 5],
  [ 2, 6],
  [ 3, 7]],

  [[ 8, 12],
  [ 9, 13],
  [10, 14],
  [11, 15]]])

还是那我们的数字7来说,之前的索引是(0,1,3),那么交换之后,就应该是(0,3,1)

多说一句,其实numpy高维数组的切片也是这样选取维度的。

以上这篇对numpy中的transpose和swapaxes函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python自定义类的数组排序实现代码
Aug 28 Python
python数据结构之链表的实例讲解
Jul 25 Python
Python人脸识别初探
Dec 21 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
详解python做UI界面的方法
Feb 27 Python
python匿名函数用法实例分析
Aug 03 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
python Scrapy爬虫框架的使用
Jan 21 Python
Python基础之元类详解
Apr 29 Python
Numpy 改变数组维度的几种方法小结
Aug 02 #Python
python 字典中取值的两种方法小结
Aug 02 #Python
python 剪切移动文件的实现代码
Aug 02 #Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 #Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 #Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 #Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 #Python
You might like
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python处理CSV与List的转换方法
2018/04/19 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python with语句和过程抽取思想
2019/12/23 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
信息管理员岗位职责
2013/12/01 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
python urllib库的使用详解
2021/04/13 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python
docker-compose部署Yapi的方法
2022/04/08 Servers
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
Echarts如何重新渲染实例详解
2022/05/30 Javascript
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers