对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中zfill()方法的使用教程
May 20 Python
实现python版本的按任意键继续/退出
Sep 26 Python
Python 描述符(Descriptor)入门
Nov 20 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
python 调用c语言函数的方法
Sep 29 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
django中ImageField的使用详解
Dec 21 Python
如何用python实现一个HTTP连接池
Jan 14 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
Python anaconda安装库命令详解
Oct 16 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
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
php简单判断文本编码的方法
2015/07/30 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
WebStorm ES6 语法支持设置&babel使用及自动编译(详解)
2017/09/08 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
npm的lock机制解析
2019/06/20 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Python中DJANGO简单测试实例
2015/05/11 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
python实现字符串和字典的转换
2018/09/29 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
Django设置Postgresql的操作
2020/05/14 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
服务标兵事迹材料
2014/05/04 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
技术负责人岗位职责
2015/02/10 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python