对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接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python读取properties配置文件操作示例
Mar 29 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python科学计算之scipy——optimize用法
Nov 25 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
python zip()函数的使用示例
Sep 23 Python
如何正确理解python装饰器
Jun 15 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在linux下检测mysql同步状态的方法
2015/01/15 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
php字符串的替换,分割和连接方法
2016/05/23 PHP
一些常用的JS功能函数代码
2009/06/23 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
jquery获取radio值实例
2014/10/16 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
javascript基础知识
2016/06/07 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
英国最大的线上保健品零售商之一:Vitamin Planet
2016/12/01 全球购物
Linux常见面试题
2016/10/04 面试题
港湾网络笔试题
2014/04/19 面试题
英语专业毕业个人求职自荐信
2013/09/21 职场文书
品质主管的岗位职责
2013/12/04 职场文书
家长对老师的感言
2014/03/11 职场文书
保护动物倡议书
2014/04/15 职场文书
市场营销策划方案
2014/06/11 职场文书
新闻学专业求职信
2014/07/28 职场文书
校长师德表现自我评价
2015/03/04 职场文书
入党介绍人考察意见
2015/06/01 职场文书
安全主题班会教案
2015/08/12 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers