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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
Python网络编程中urllib2模块的用法总结
Jul 12 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
python递归全排列实现方法
Aug 18 Python
python找出完数的方法
Nov 12 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
python监控nginx端口和进程状态
Sep 06 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 Python
Django + Taro 前后端分离项目实现企业微信登录功能
Apr 07 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学习之PHP表达式
2006/10/09 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
如何提高python 中for循环的效率
2020/04/15 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
2014年电厂工作总结
2014/12/04 职场文书
答谢词范文
2015/01/05 职场文书
合同纠纷调解书
2015/05/20 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书