目录

1 .T,适用于一、二维数组

arr.T #求转置

transpose 的原理其实是根据维度(shape)索引决定的,举个栗子:

2. 高维数组

3. swapaxes


转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作)。

对numpy数组的转置有三种方式,transpose方法、T属性以及swapaxes方法。

1 .T,适用于一、二维数组

arr.T #求转置

In [1]: import numpy as npIn [2]: arr = np.arange(20).reshape(4,5)#生成一个4行5列的数组In [3]: arr
Out[3]:
array([[ 0,  1,  2,  3,  4],[ 5,  6,  7,  8,  9],[10, 11, 12, 13, 14],[15, 16, 17, 18, 19]])  # 4行5列In [4]: arr.T #求转置
Out[4]:
array([[ 0,  5, 10, 15],[ 1,  6, 11, 16],[ 2,  7, 12, 17],[ 3,  8, 13, 18],[ 4,  9, 14, 19]])  # 5行4列

transpose 的原理其实是根据维度(shape)索引决定的,举个栗子:

x = np.arange(4).reshape((2,2)) //生成一个2x2的数组
print(x)
[[0 1]
[2 3]]

我们生成了一个维度为二维的数组,其中有两个索引值(矩阵的行与列)。

transpose()函数的作用就是调换数组的行列值的索引值,类似于求矩阵的转置:

x = np.arange(4).reshape((2,2))
x = np.transpose(x)
print(x)
[[0 2][1 3]]

我们可以直观的看到,数组的行列索引值对换,1的位置从x(0,1)跑到了x(1,0)。

那么三维数组呢?

2. 高维数组

对于高维数组,transpose需要用到一个由轴编号组成的元组,才能进行转置。

这里,着实好好理解了一下。开始的时候怎么都想不明白。因为他跟矩阵转置理解起来不太一样。

首先定义一个原数组arr

原3维数组arr:[[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]]
3个维度: (2, 3, 4)

原三维数组 arr 三个维度 (2,3,4) CHW,对应的是 (0,1,2) 三个索引

形状 索引
2 0
3 1
4 2

transpose 函数可以理解为改变数组数值的映射关系,原数组中,6这个数所在的索引是(0,1,2)

arr1 = arr.transpose((1,0,2)) 的操作相当于把原三维数组 arr 的第一个维度和第二个维度调换【新数组6这个数所在的索引是(1,0,2)】
arr2 = arr.transpose((0,2,1)) 的操作相当于把原三维数组 arr 的第二个维度和第三个维度调换【新数组6这个数所在的索引是(0,2,1)】

原数组 arr (2,3,4)

新数组 arr1 (3,2,4)

新数组arr2 (2,4,3)

3. swapaxes

虽然还有点不解的地方,但是,理解了上方那部分之后,swapaxes方法也就很好理解了。它接受一对轴编号。进行轴对换。其实也就是shape参数。

In [67]: arr2 = np.arange(16).reshape(2,2,4)           In [68]: arr2
Out[68]:
array([[[ 0,  1,  2,  3],                              [ 4,  5,  6,  7]],                             [[ 8,  9, 10, 11],                              [12, 13, 14, 15]]])                            In [69]: arr2.shape
Out[69]: (2, 2, 4)                                     In [70]: arr2.swapaxes(1,2)
Out[70]:
array([[[ 0,  4],                                      [ 1,  5],                                      [ 2,  6],                                      [ 3,  7]],                                     [[ 8, 12],                                      [ 9, 13],                                      [10, 14],                                      [11, 15]]])   In [4]: arr2.swapaxes(1,0)#转置,对比transpose(1,0,2)
Out[4]:
array([[[ 0,  1,  2,  3],[ 8,  9, 10, 11]],[[ 4,  5,  6,  7],[12, 13, 14, 15]]])

文章转载自:

详解numpy中transpose()函数_深度Face的博客-CSDN博客

转置(transpose)的理解_G果的博客-CSDN博客

转置(transpose)的理解相关推荐

  1. python transpose_对python 矩阵转置transpose的实例讲解

    在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path) arr_im ...

  2. python转置矩阵函数_对python 矩阵转置transpose的实例讲解

    在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path) arr_im ...

  3. python矩阵转置_对python矩阵转置transpose的实例讲解

    对python矩阵转置transpose的实例讲解 在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img ...

  4. numpy中的转置Transpose和.T以及轴对换swapaxis

    简 介: 本文对于 numpy中的转置Transpose和.T以及轴对换swapaxis 中关于numpy矩阵的轴交换函数进行了测试.并对于深度学习中的图像数据进行处理. 参考文章:https://b ...

  5. 深度学习 | 反卷积/转置卷积 的理解 transposed conv/deconv

    原文:https://blog.csdn.net/u014722627/article/details/60574260 深度学习 | 反卷积/转置卷积 的理解 transposed conv/dec ...

  6. Matlab转置transpose, .‘与复共轭转置ctranspose, ‘

    Matlab里有两种转置, 转置transpose或者.'与复共轭转置ctranspose或者'. 对于实数矩阵, 两种方法结果一样. 对于复数矩阵, 使用ctranspose或者'不仅会转置, 复数 ...

  7. python 矩阵转置transpose

    在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path)       ...

  8. tensorflow.transpose的理解

    2维的话就是转置:行变列  列变行 3维的话就把数据看成立方体,tanspose的维度的变化就是从不同轴的方向看得到的数据.因为行x宽x高是相对的,这就导致了transpose横看成岭侧成峰的现象 h ...

  9. 深度学习卷积网络中反卷积/转置卷积的理解 transposed conv/deconv

    搞明白了卷积网络中所谓deconv到底是个什么东西后,不写下来怕又忘记,根据参考资料,加上我自己的理解,记录在这篇博客里. 先来规范表达 为了方便理解,本文出现的举例情况都是2D矩阵卷积,卷积输入和核 ...

  10. tf.transpose()个人理解,高纬度的变换,可以将部分维度看成黑盒(整体)

    一 函数原型 tf.transpose( a, perm=None, name='transpose', conjugate=False ) a:表示的是需要变换的张量 perm:a的新的维度序列 n ...

最新文章

  1. JVM与Dalvik
  2. 39. Leetcode 110. 平衡二叉树 (二叉树-二叉树性质)
  3. Sybase中字符串替换函数 STR REPLACE
  4. python标准词匹配_用 Python 自动化办公能做到哪些有趣或有用的事情?
  5. mysql第四项_mysql数据库的基本介绍与操作(第四篇-mysql索引篇)
  6. linux-关于用户的约定
  7. android camera(6)---camera2 拍照流程
  8. 查看文件md5_软件推荐丨go-fastdfs——高性能、高可靠分布式文件系统
  9. 读取无线手柄数据_全透外形,优秀手感,双平台通吃:倍思Switch无线手柄
  10. 《JS高级程序设计》之三
  11. PHP 结构控制 if else / switch / while / do while
  12. 使用apktool来解包和重新打包
  13. 【Cadence16.6】安装教程
  14. python风控建模培训
  15. 怎么用Linux查看服务器日志,Linux查看服务器日志
  16. html 单击事件 隐藏/显示div
  17. snaker mybatis 配置
  18. 2024 递归Eason
  19. 小程序源码:全新动态视频壁纸下载支持多种分类短视频另外也有静态壁纸
  20. 大笨钟 (10 分)

热门文章

  1. android studio release包安装后打不开,debug包安装正常怎么解决
  2. opencv3图像处理小程序(一)
  3. 全面认识海思SDK及嵌入式层开发(4)
  4. The rate shock 利率冲击 | 经济学人中英双语精读笔记
  5. 关于我发表了TalentOrg的面试文章而被官方的人找上门
  6. [全流程案例]壮汉:1. 起大形(Blender)
  7. 1024啊、终于等到了
  8. 2022中式烹调师(初级)特种作业证考试题库及答案
  9. 最初制造计算机的目的,31最早研究图像处理技术的目的是为了改善人类分析判断图像信息的能力随着计算机与人工智能技术的发展以及生产制造方面...
  10. 计算机与科学技术暑期社会实践,2018年暑期社会实践活动|计算机科学技术学院、软件学院...