numpy.transpose对三维数组的转置方法


Posted in Python onApril 17, 2018

如下所示:

import numpy as np

三维数组

arr1 = np.arange(16).reshape((2, 2, 4)) 
#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]] 
 
arr2=arr1.transpose((1,0,2)) 
#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]

正序为(0,1,2),数组为

#[[[ 0 1 2 3] 
# [ 4 5 6 7]] 
 
# [[ 8 9 10 11] 
# [12 13 14 15]]]

为什么进过tanspose(1,0,2),数组变为

#[[[ 0 1 2 3] 
# [ 8 9 10 11]] 
# 
# [[ 4 5 6 7] 
# [12 13 14 15]]]

仔细观察之后,可以看到转置后的数组和转置前的数组的区别就是第一页的第二行和第二页的第一行对换了,可是为什么?

当我用arr1[0,1,0],索引值为4

当我用arr2[1,0,0],索引值为4

对比索引参数表的变化和正序和转置序的不同似乎存在某种联系

对于arr1数组,索引参数表[0,0,x]可以表示第一页的第一行,当前两个参数对换之后,同一个元素的索引参数表并没有变化

故arr2的第一页第一行和arr1的第一页第一行相同

对于arr1数组,索引参数表[0,1,x]可以表示第一页第二行,当前两个参数对换之后,同一个元素的索引值比如[0,1,0]变为[1,0,0],

这就是解释了索引值4的索引参数表的不同

大概就是这个思路所以transpose(1,0,2),数组的第一页第二行和第二页第一行对换

后面的四种转置方式也大致是这个思路,仔细观察一下,理解起来应该不难

arr3=arr1.transpose((0,2,1)) 
 
# [[[ 0 4] 
# [ 1 5] 
# [ 2 6] 
# [ 3 7]] 
# 
# [[ 8 12] 
# [ 9 13] 
# [10 14] 
# [11 15]]] 
 
arr4=arr1.transpose((2,0,1)) 
#[[[ 0 4] 
# [ 8 12]] 
# 
# [[ 1 5] 
# [ 9 13]] 
# 
# [[ 2 6] 
# [10 14]] 
# 
# [[ 3 7] 
# [11 15]]]

这里要注意的是,arr4数组变成4页,这是因为页码和行码对换之后,

页码从数量2,变成了4

而行码从数量4,变成了2

arr5=arr1.transpose((2,1,0)) 
#[[[ 0 8] 
# [ 4 12]] 
# 
# [[ 1 9] 
# [ 5 13]] 
# 
# [[ 2 10] 
# [ 6 14]] 
# 
# [[ 3 11] 
# [ 7 15]]] 
 
arr6=arr1.transpose((1,2,0)) 
#[[[ 0 8] 
# [ 1 9] 
# [ 2 10] 
# [ 3 11]] 
# 
# [[ 4 12] 
# [ 5 13] 
# [ 6 14] 
# [ 7 15]]]

另外,转置(2,0,1)可以看成,先转置(0,2,1)再转置(1,0,2)

转置(2,1,0)可以看成,先转置(1,0,2),然后转置(0,2,1),最后转置(1,0,2)

转置(1,2,0)可以看成,先转置(1,0,2),在转置(0,2,1)

代码可以写成

arr4=arr1.transpose(0,2,1).transpose(1,0,2)
#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]]

结果一样!

以上这篇numpy.transpose对三维数组的转置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算最小优先级队列代码分享
Dec 18 Python
Python中的下划线详解
Jun 24 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
Python 支付整合开发包的实现
Jan 23 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
利用PyTorch实现VGG16教程
Jun 24 Python
利用python 下载bilibili视频
Nov 13 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 #Python
Python中的上下文管理器和with语句的使用
Apr 17 #Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 #Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 #Python
Numpy掩码式数组详解
Apr 17 #Python
对numpy中布尔型数组的处理方法详解
Apr 17 #Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 #Python
You might like
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
vue 中几种传值方法(3种)
2019/11/12 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
windows上安装Anaconda和python的教程详解
2017/03/28 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
采购主管工作职责
2013/12/12 职场文书
高中生活自我鉴定
2014/01/18 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
小学学校评估方案
2014/06/08 职场文书
司机岗位职责说明书
2014/07/29 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
交警作风整顿剖析材料
2014/10/11 职场文书
南极大冒险观后感
2015/06/05 职场文书
《圆的周长》教学反思
2016/02/17 职场文书