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 布尔操作实现代码
Mar 23 Python
python单元测试unittest实例详解
May 11 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
python爬虫基本知识
Mar 05 Python
Pandas标记删除重复记录的方法
Apr 08 Python
python基于物品协同过滤算法实现代码
May 31 Python
Python离线安装PIL 模块的方法
Jan 08 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
python实现微信自动回复机器人功能
Jul 11 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Python中zipfile压缩包模块的使用
May 14 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 cookis创建实现代码
2009/03/16 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php判断表是否存在的方法
2015/06/18 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
jquery自定义表格样式
2015/11/23 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
js实现全选和全不选
2020/07/28 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
python命令行参数sys.argv使用示例
2014/01/28 Python
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
超市仓管员岗位职责
2014/04/07 职场文书
小学五年级学生评语
2014/04/22 职场文书
儿童生日会策划方案
2014/05/15 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
雷锋电影观后感
2015/06/10 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
卖车协议书范文
2016/03/23 职场文书