对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使用gensim计算文档相似性
Apr 10 Python
node.js获取参数的常用方法(总结)
May 29 Python
python实现分页效果
Oct 25 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
python中rb含义理解
Jun 18 Python
Python实现GIF图倒放
Jul 16 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 Python
Python必备技巧之字符数据操作详解
Mar 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
收音机的保养
2021/03/01 无线电
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
php实现留言板功能
2017/03/05 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
超级强大的表单验证
2006/06/26 Javascript
Javascript 中的 && 和 || 使用小结
2010/04/25 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
一分钟理解js闭包
2016/05/04 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
简单学习vue指令directive
2016/11/03 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
python数据分析:关键字提取方式
2020/02/24 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
用python批量下载apk
2020/12/29 Python
小学体育教学反思
2014/01/31 职场文书
经营理念口号
2014/06/21 职场文书
学校推普周活动总结
2015/05/07 职场文书
草房子读书笔记
2015/06/29 职场文书
六年级数学教学反思
2016/02/16 职场文书
MYSQL如何查看进程和kill进程
2022/03/13 MySQL