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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python字符串逐字符或逐词反转方法
May 21 Python
Python编程中的for循环语句学习教程
Oct 14 Python
浅谈python标准库--functools.partial
Mar 13 Python
python for和else语句趣谈
Jul 02 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
Python count函数使用方法实例解析
Mar 23 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
使用Django搭建网站实现商品分页功能
May 22 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
python小程序之飘落的银杏
Apr 17 Python
python使用torch随机初始化参数
Mar 22 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
javascript 清除输入框中的数据
2009/04/13 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python中文竖排显示的方法
2015/07/28 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
django 微信网页授权登陆的实现
2019/07/30 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
Pycharm中如何关掉python console
2020/10/27 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
Html5 localStorage入门教程
2018/04/26 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
副主任竞聘演讲稿
2014/08/18 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL