对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 SDK写一个同步脚本及使用教程
Aug 23 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
Python网络爬虫出现乱码问题的解决方法
Jan 05 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 Python
Python实现自动玩连连看的脚本分享
Apr 04 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 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面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
利用python画出折线图
2018/07/26 Python
python 实现A*算法的示例代码
2018/08/13 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
运动会横幅标语
2014/06/17 职场文书
2015年母亲节寄语
2015/03/23 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python