对python 矩阵转置transpose的实例讲解


Posted in Python onApril 17, 2018

在读图片时,会用到这么的一段代码:

image_vector_len = np.prod(image_size)#总元素大小,3*55*47
img = Image.open(path)
    arr_img = np.asarray(img, dtype='float64')
    arr_img = arr_img.transpose(2,0,1).reshape((image_vector_len, ))# 47行,55列,每个点有3个元素rgb。再把这些元素一字排开

transpose是什么意识呢? 看如下例子:

arr1 = array([[[ 0, 1, 2, 3],
    [ 4, 5, 6, 7]],
    [[ 8, 9, 10, 11],
    [12, 13, 14, 15]]])

这是原来的矩阵。如果对其进行转置,执行arr2 = arr1.transpose((1,0,2))

得到:

array([[[ 0, 1, 2, 3],
    [ 8, 9, 10, 11]],
    [[ 4, 5, 6, 7],
    [12, 13, 14, 15]]])

过程是怎样的?

arr1.shape 应该是(2, 2, 4) 意为 2维,2*4矩阵

arr1.transpose(*args) 里面的参数,可以这么理解,他是调换arr1.shape的顺序,咱来给arr1.shape标一下角标哈,(2[0], 2[1], 4[2]) [ ] 里是shape的索引,对吧,

transpose((1, 0, 2)) 的意思是 按照这个顺序 重新设置shape 也就是 (2[1], 2[0], 4[2])

虽然看起来 变换前后的shape都是 2,2,4 , 但是问题来了,transpose是转置

shape按照(1,0,2)的顺序重新设置了, array里的所有元素 也要按照这个规则重新组成新矩阵

比如 8 在arr1中的索引是 (1, 0, 0) 那么按照刚才的变换规则,就是 (0, 1, 0) 看看跟你结果arr2的位置一样了吧,依此类推..

另外一个知识点:

对于一维的shape,转置是不起作用的,举例:

x=linspace(0,4,5) 
#array([0.,1.,2.,3.,4.])
y=transpose(x)  # 会转置失败。

如果想正确使用的话:

x.shape=(5,1)
y=transpose(x)  #就可以了

以上这篇对python 矩阵转置transpose的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用SAX解析xml实例
Nov 21 Python
在Python中调用ggplot的三种方法
Apr 08 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
Python requests发送post请求的一些疑点
May 20 Python
对Python 语音识别框架详解
Dec 24 Python
python游戏地图最短路径求解
Jan 16 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
python怎么判断模块安装完成
Jun 19 Python
利用python 下载bilibili视频
Nov 13 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 #Python
解读python logging模块的使用方法
Apr 17 #Python
numpy中的高维数组转置实例
Apr 17 #Python
numpy.transpose对三维数组的转置方法
Apr 17 #Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 #Python
Python中的上下文管理器和with语句的使用
Apr 17 #Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 #Python
You might like
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
Javascript 面向对象特性
2009/12/28 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
vue中的mescroll搜索运用及各种填坑处理
2019/10/30 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
同学会主持词
2014/03/18 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
员工手册编写范本
2015/05/14 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书