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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
Python实现全角半角转换的方法
Aug 18 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
python实现excel读写数据
Mar 02 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
Python类中方法getitem和getattr详解
Aug 30 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Numpy之reshape()使用详解
Dec 26 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 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
如何将数据从文本导入到mysql
2006/10/09 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
python使用range函数计算一组数和的方法
2015/05/07 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
通过代码实例了解Python异常本质
2020/09/16 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
学习党的群众路线对照检查材料
2014/09/29 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
家长高考寄语
2015/02/27 职场文书
工作服管理制度范本
2015/08/06 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python