Python numpy.transpose 详解
前言
看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpose 用法还是很简单的。
正文
Numpy 文档 numpy.transpose 中做了些解释,transpose 作用是改变序列,下面是一些文档Examples:
代码1:
x = np.arange(4).reshape((2,2))
- 1
输出1:
#x 为:
array([[0, 1],
[2, 3]])
- 1
- 2
- 3
代码2:
import numpy as np
x.transpose()
- 1
- 2
输出2:
array([[0, 2],
[1, 3]])
- 1
- 2
对于二维 ndarray,transpose在不指定参数是默认是矩阵转置。如果指定参数,有如下相应结果:
代码3:
x.transpose((0,1))
- 1
输出3:
# x 没有变化
array([[0, 1],
[2, 3]])
- 1
- 2
- 3
代码4:
x.transpose((1,0))
- 1
输出4:
# x 转置了
array([[0, 2],
[1, 3]])
- 1
- 2
- 3
这个很好理解:
对于x,因为:
代码5:
x[0][0] == 0
x[0][1] == 1
x[1][0] == 2
x[1][1] == 3
- 1
- 2
- 3
- 4
我们不妨设第一个方括号“[]”为 0轴 ,第二个方括号为 1轴 ,则x可在 0-1坐标系 下表示如下:
代码6:
因为 x.transpose((0,1)) 表示按照原坐标轴改变序列,也就是保持不变
而 x.transpose((1,0)) 表示交换 ‘0轴’ 和 ‘1轴’,所以就得到如下图所示结果:
- 1
- 2
注意,任何时候你都要保持清醒,告诉自己第一个方括号“[]”为 0轴 ,第二个方括号为 1轴
此时,transpose转换关系就清晰了。
我们来看一个三维的:
代码7:
import numpy as np
# A是array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
A = np.arange(16)
# 将A变换为三维矩阵
A = A.reshape(2,2,4)
print(A)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
输出7:
A = array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
- 1
- 2
- 3
- 4
- 5
我们对上述的A表示成如下三维坐标的形式:
所以对于如下的变换都很好理解啦:
代码8:
A.transpose((0,1,2)) #保持A不变
A.transpose((1,0,2)) #将 0轴 和 1轴 交换
- 1
- 2
将 0轴 和 1轴 交换:
此时,输出
代码9:
A.transpose((1,0,2)) [0][1][2] #根据上图这个结果应该是10
- 1
后面不同的参数以此类推。
完。
Python numpy.transpose 详解的更多相关文章
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- Python开发技术详解(视频+源码+文档)
Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
随机推荐
- 论文阅读笔记---HetConv
1 写在前边的话 HetConv性能:当使用HetConv取代标准卷积之后,FLOPs大概是之前的1/8到1/3,更重要的是精度几乎不变!!! 论文地址:https://arxiv.org/abs/1 ...
- 用星星画菱形--Java
用星星画菱形 public class Hello{ public static void main(String[] args) { char star = '\u2605'; System.out ...
- idea设置编码格式utf-8
settings >> File Encodings >>如下
- UMP系统功能 容灾
- 【默默努力】ig-wxz-and-hotdog
这个是一个非常跟热点的小游戏,思聪吃热狗.这个游戏的话,我感觉思路还挺简单的,天上会掉热狗和障碍物, 思聪在下面张开嘴巴,进行左右移动,接热狗.如果吃到的是热狗就得一分,如果思聪吃到的不是热狗,是障碍 ...
- 接口测试——postman
一.接口测试的准备工作 做接口测试之前需要有接口文档,请求参数,返回参数 二.使用postman进行接口测试 1.get请求 ①get请求可以直接在URL后面添加问号加参数,不需要使用工具来测试接口: ...
- mysql之备份表和备份数据库
备份表 1.首先创建一个与原来一样的表 create table score2 like score; ###like就是将score表的结构拷贝过来,但是它并不执行数据:也就是说执行完上面的语句之后 ...
- github和gitlab仓库一起使用
github是网络公有代码仓库,一般用于私人代码托管,而gitlab一般是企业搭建的内部代码仓库.工作期间,我们都会同时用到这两个仓库.可公司邮箱与个人邮箱是不同的,由此产生的 SSH key 也是不 ...
- Ubuntu clion下载及激活
1.下载 方法:去官网下载clion https://www.jetbrains.com/clion/download/#section=linux 或者使用我上传的百度网盘链接: https:// ...
- MYSQL批量创建表的存储过程
因为业务需要,创建了100个表,但是这些表的结构都是一样的,作为程序员,就是要解决这种重复劳动.然而这种事情还要单独写个php脚本的话太麻烦了吧,所以就干脆学了一下直接用Mysql存储过程怎么实现: ...