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 相关文章推荐
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
在Django中创建动态视图的教程
Jul 15 Python
Python 模块EasyGui详细介绍
Feb 19 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
python里运用私有属性和方法总结
Jul 08 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
python playwright 自动等待和断言详解
Nov 27 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(2)
2006/10/09 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
php-app开发接口加密详解
2018/04/18 PHP
让焦点自动跳转
2006/07/01 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
div移动 输入框不能输入的问题
2009/11/19 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
Python3安装Scrapy的方法步骤
2017/11/23 Python
python绘制双柱形图代码实例
2017/12/14 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
药学专业学生的自我评价分享
2014/02/06 职场文书
请假条怎么写
2014/04/10 职场文书
优秀员工评优方案
2014/06/13 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
团日活动总结格式
2015/05/11 职场文书
社会实践单位意见
2015/06/05 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫