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清除字符串里非字母字符的方法
Jul 02 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
python实现壁纸批量下载代码实例
Jan 25 Python
python网络爬虫学习笔记(1)
Apr 09 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python实现可变变量名方法详解
Jul 01 Python
Python利用scapy实现ARP欺骗的方法
Jul 23 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
Django如何使用jwt获取用户信息
Apr 21 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
Python爬取网页信息的示例
Sep 24 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
Python将字符串常量转化为变量方法总结
2019/03/17 Python
Python Celery多队列配置代码实例
2019/11/22 Python
python实现简单图书管理系统
2019/11/22 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python基于locals返回作用域字典
2020/10/17 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
大学生个人简历自我评价
2013/11/16 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
教师工作表现评语
2014/12/31 职场文书
毕业生评语大全
2015/01/04 职场文书
学年个人总结范文
2015/03/05 职场文书
防暑降温通知书
2015/04/27 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技