对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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
讲解Python中fileno()方法的使用
May 24 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
python getopt详解及简单实例
Dec 30 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 Python
用python计算文件的MD5值
Dec 23 Python
Python实现京东抢秒杀功能
Jan 25 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
python实现简易自习室座位预约系统
Jun 30 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 和 HTML
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
javascript常用函数(1)
2015/11/04 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
详解python之简单主机批量管理工具
2017/01/27 Python
Python logging模块用法示例
2018/08/28 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
信息管理员岗位职责
2013/12/01 职场文书
学校后勤人员职责
2013/12/27 职场文书
学生会主席演讲稿
2014/04/25 职场文书
技能比武方案
2014/05/21 职场文书
工地宣传标语
2014/06/18 职场文书
居委会工作总结2015
2015/05/18 职场文书
贷款收入证明格式
2015/06/24 职场文书