二维情况

例如以下代码:

x = np.arange(4).reshape((2,2))

输出:

x = ([[0, 1],

[2, 3]])

对于二维的数组,np.transpose()即为将矩阵进行转置的意思 PS:对于矩阵的维度的表示:

n

m

l

n*m*l

n∗m∗l:有多少个数据相乘就是有多少维,而最终的乘积结果表示一共有多少个数据 为什么说二维数组中,np.transpose()就是矩阵转置呢?可以通过坐标法来解释这个问题 假设原数组如下:

([[0, 1],

[2, 3]])

执行代码:

import numpy as np

x.transpose()

后,得到的数组为:

([[0, 2],

[1, 3]])

原理如下: 不妨设第一个方括号“[]”为 0轴 ,第二个方括号为 1轴 ,则x可在 0-1坐标下表示:  PS:这里默认的书写方向都是这样:即按照数组内元素的位置来写。如下:

x[0][0] == 0

x[0][1] == 1

x[1][0] == 2

x[1][1] == 3

当执行transpose操作后,示意图如下:  可以看出,0轴和1轴交换了位置。可以理解为: transpose = transaction + position 因此操作后的新数组为:

([[0, 2],

[1, 3]])

PS:读取数据的时候还是按照数据的索引位置进行读取 注意,任何时候你都要保持清醒,告诉自己第一个方括号“[]”为 0轴 ,第二个方括号为 1轴 此时,transpose转换关系就清晰了。

三维情况

代码:

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)

输出:

A = array([[[ 0,  1,  2,  3],

[ 4,  5,  6,  7]],

[[ 8,  9, 10, 11],

[12, 13, 14, 15]]])

表示成坐标形式如下:  PS:数字的排放仍旧是按照空间坐标位置书写

x[0][0][0] = 0

x[0][0][1] = 1

x[0][0][2] = 2

x[0][0][3] = 3

x[0][1][0] = 4

x[0][1][1] = 5

x[0][1][2] = 6

x[0][1][3] = 7

x[1][0][0] = 8

x[1][0][1] = 9

x[1][0][2] = 10

x[1][0][3] = 11

x[1][1][0] = 12

x[1][1][1] = 13

x[1][1][2] = 14

x[1][1][3] = 15

执行以下代码:

A.transpose((1,0,2))  #将 0轴 和 1轴 交换

这里解释一下函数里的参数的意思: 因为我们这里是三维的,因此就有三个轴,默认对轴的编号为0,1,2.即:从0开始编号。 每个编号就代表了对应的轴。 初识时每个轴的位置如上图我们假设所示。在函数内的参数中,初始时默认(0,1,2)现在参数改为 (1,0,2) 即:把0,1的位置调换了,也就是把0,1轴的位置调换了,结果示意图如下:  因此最终的数组为:

A = array([[[ 0,  1,  2,  3],

[ 8,  9, 10, 11] ],

[[ 4,  5,  6,  7],

[12, 13, 14, 15]]])

通过坐标表述的方法以后,可以形象的描述transpose函数的实际工作过程 但是由于超过三维以上以后,很难画出具体的坐标轴,笔者能力有限,恕难表述清楚,下面举一个具体的例子来看: 以下的例子是李飞飞教授的热门课程:cs231n_Computer Vision课后作业代码中的一个列子: PS:代码系笔者本人所写

x=x.reshape(10000,3,32,32).transpose(0,2,3,1).astype('float')

这个代码是在加载CIFAR-10数据集的函数中的一条语句。其中用到了Transpose函数,下面我解释一下为什么要这么做: 通常在目标检测中,我们读入的数据格式是(32,32,3)即通道数在最后,而CIFAR-10的数据集中我们处理的时候是将RGB通道放在了前面(怪我不早处理……),因此要将数轴调换一下,就用到了Transpose函数 个人纯粹是为了方便后面数据处理的时候使用的。

总结

对于Transpose函数的理解可以从建立坐标轴上理解,但是一定要注意数据读取的过程,否则就会出现混乱。由于个人能力有限,无法找出三维以上的形象化的理解方法。对于实际应用中,可以理解为数据的调换,如cs231n中的语句使用。 以上关于数轴方法理解函数也参照了几篇博客,如下:

数轴方法

python transpose函数_Python Numpy.transpose函数可视化解释相关推荐

  1. python row函数_Python numpy 常用函数总结

    Numpy是什么 在没给大家介绍numpy之前先给大家说下python的基本概念. Python 是一种高级的,动态的,多泛型的编程语言.Python代码很多时候看起来就像是伪代码一样,因此你可以使用 ...

  2. python中isin函数_Python numpy.isin函数方法的使用

    numpy.isin numpy.isin(element, test_elements, assume_unique=False, invert=False)     [source] 计算test ...

  3. python怎么运行ln函数_python numpy ln函数python之nosetests自动化测试框架感知

    这几天都有遇到nosetest,一是hardway learn python中,还有一个是django中,因此想趁此了解下有什么用,看了半天也不理解具体的用处,还是老规矩把尝试的一些内容记下来.之所以 ...

  4. python排大小函数_python numpy 一些函数 大小排序和统计

    排序大小函数 import numpy as np size = 100 a = np.random.randint(0, 1000, size=size) print(a) # 排序之后的前k个元素 ...

  5. [转载] python histogram函数_Python numpy.histogram_bin_edges函数方法的使用

    参考链接: Python中的numpy.ceil numpy.histogram_bin_edges numpy.histogram_bin_edges(a, bins=10, range=None, ...

  6. python 中arange函数_Python numpy.arange函数方法的使用

    numpy.arange numpy.arange([start, ]stop, [step, ]dtype=None) 返回给定间隔内的均匀间隔的值. 在半开间隔[start,stop)(换句话说, ...

  7. python的std函数_Python numpy.nanstd函数方法的使用

    numpy.nanstd numpy.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims= 忽略NaN时,计算沿指定轴的标准偏差. ...

  8. python中reshape函数_Python numpy.reshape函数方法的使用

    numpy.reshape numpy.reshape(a, newshape, order='C')    [source] 在不更改数据的情况下为数组赋予新的shape.参数 :a :array_ ...

  9. python分位数函数_Python numpy.quantile函数方法的使用

    numpy.quantile numpy.quantile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linea ...

最新文章

  1. 非抢占式优先算法例题_非抢占式高优先级调度算法
  2. php foreach面试题,PHP引用理解之神奇的foreach面试题
  3. 河源电大有考计算机等级的吗,河源电大有什么专业自考也有?
  4. 使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?...
  5. Python数模笔记-NetworkX(4)最小生成树
  6. Java—System类和Runtime类
  7. 分享一些Comet开发经验
  8. 数据可视化工具软件哪个最好
  9. 计算机常用英语术语词汇表
  10. shell脚本中的逻辑判断
  11. TeamViewer的安装和使用方法
  12. 泛泰 A870 TWRP Recovery En英/Cn简/Tw繁
  13. opencv中step、step1、size、elemSize以及elemSize1区别
  14. 华为od统一考试B卷【按身高体重排队】C语言 实现
  15. DP4809国产双通道耳机音频功率放大器芯片兼容替代LM4809
  16. c++中Const,Const函数,Const变量,函数后面的Const
  17. mysql icp特性_MySQL:关于ICP特性的说明(未完)
  18. 后端一次性传了10w条数据,前端该如何处理?—— 面试高频
  19. Centos7系统下部署Gitlab+Jenkins+Docker 实现自动化部署项目
  20. 命令行批量删除带某关键字的文件

热门文章

  1. Gatling:Feeders
  2. button的外边去除、圆形div、合并单元格、下拉菜单、div隐藏
  3. 我的硬盘居然被win10安装工具_最完整的win10操作系统安装教程,再也不用第三方工具了...
  4. 阿里云Redis之:通过阿里云自带的连接工具连接Redis(十八)
  5. BugKu_getshell
  6. 【Tableau 星球】如何快速学习Tableau?(附带学习资源)
  7. Java 静态工厂方法详解
  8. 2022茶艺师(初级)复训题库及在线模拟考试
  9. axios 拦截器及其实现过程
  10. java 截图 发送电子邮件