对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中用split()方法分割字符串的使用介绍
May 20 Python
Python中几个比较常见的名词解释
Jul 04 Python
python3.5使用tkinter制作记事本
Jun 20 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
Python整数对象实现原理详解
Jul 01 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
python实现简单井字棋游戏
Mar 04 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php include类文件超时问题处理
2015/02/06 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
jquery select选中的一个小问题
2009/10/11 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
js命名空间写法示例
2015/12/18 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
理解Python垃圾回收机制
2016/02/12 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
解析python的局部变量和全局变量
2019/08/15 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
静态成员和非静态成员的区别
2012/05/12 面试题
三好学生个人先进事迹材料
2014/05/17 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
医院见习总结
2015/06/24 职场文书
导游词之襄阳古城
2019/09/27 职场文书