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 多进程通信模块的简单实现
Feb 20 Python
python网络编程之数据传输UDP实例分析
May 20 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
python 实现A*算法的示例代码
Aug 13 Python
django的ORM模型的实现原理
Mar 04 Python
python的pstuil模块使用方法总结
Jul 26 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
Python如何解除一个装饰器
Aug 07 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 生成WML页面方法详解
2009/08/09 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php网站地图生成类示例
2014/01/13 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP整合PayPal支付
2015/06/11 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
javascript表单验证大全
2015/08/12 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
在Docker上开始部署Python应用的教程
2015/04/17 Python
python数据类型_字符串常用操作(详解)
2017/05/30 Python
python实现求最长回文子串长度
2018/01/22 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
Python中@property的理解和使用示例
2019/06/11 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
医院后勤自我鉴定
2013/10/13 职场文书
本科毕业生自荐信
2014/06/02 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书