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 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
python实现rest请求api示例
Apr 22 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
python图像常规操作
Nov 11 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
python3实现域名查询和whois查询功能
Jun 21 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python配置pip国内镜像源的实现
Aug 20 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
python flask开发的简单基金查询工具
Jun 02 Python
Python+tkinter实现高清图片保存
Mar 13 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php 中英文语言转换类代码
2011/08/11 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
Yii快速入门经典教程
2015/12/28 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
简单解析Django框架中的表单验证
2015/07/17 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
python求最大值最小值方法总结
2019/06/25 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
大学生护理专业自荐信
2013/10/03 职场文书
安全检查管理制度
2014/02/02 职场文书
测试工程师职业规划书
2014/02/06 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
大专生求职信
2014/06/29 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android