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函数递归和生成器
Jun 06 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
Jul 09 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
python绘制随机网络图形示例
Nov 21 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
python 动态绘制爱心的示例
Sep 27 Python
Python try except else使用详解
Jan 12 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
AM/FM收音机的安装与调试
2021/03/02 无线电
PHP新手上路(七)
2006/10/09 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
使用p5.js临摹动态图片
2019/11/04 Javascript
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
构建Python包的五个简单准则简介
2015/06/15 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
优秀中学生事迹材料
2014/01/31 职场文书
球队口号
2014/06/18 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
干部年终考核评语
2015/01/04 职场文书
成本会计岗位职责
2015/02/03 职场文书
学习心得体会
2019/06/20 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书