python transpose函数_Python Numpy.transpose函数可视化解释
二维情况
例如以下代码:
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函数可视化解释相关推荐
- python row函数_Python numpy 常用函数总结
Numpy是什么 在没给大家介绍numpy之前先给大家说下python的基本概念. Python 是一种高级的,动态的,多泛型的编程语言.Python代码很多时候看起来就像是伪代码一样,因此你可以使用 ...
- python中isin函数_Python numpy.isin函数方法的使用
numpy.isin numpy.isin(element, test_elements, assume_unique=False, invert=False) [source] 计算test ...
- python怎么运行ln函数_python numpy ln函数python之nosetests自动化测试框架感知
这几天都有遇到nosetest,一是hardway learn python中,还有一个是django中,因此想趁此了解下有什么用,看了半天也不理解具体的用处,还是老规矩把尝试的一些内容记下来.之所以 ...
- python排大小函数_python numpy 一些函数 大小排序和统计
排序大小函数 import numpy as np size = 100 a = np.random.randint(0, 1000, size=size) print(a) # 排序之后的前k个元素 ...
- [转载] python histogram函数_Python numpy.histogram_bin_edges函数方法的使用
参考链接: Python中的numpy.ceil numpy.histogram_bin_edges numpy.histogram_bin_edges(a, bins=10, range=None, ...
- python 中arange函数_Python numpy.arange函数方法的使用
numpy.arange numpy.arange([start, ]stop, [step, ]dtype=None) 返回给定间隔内的均匀间隔的值. 在半开间隔[start,stop)(换句话说, ...
- python的std函数_Python numpy.nanstd函数方法的使用
numpy.nanstd numpy.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims= 忽略NaN时,计算沿指定轴的标准偏差. ...
- python中reshape函数_Python numpy.reshape函数方法的使用
numpy.reshape numpy.reshape(a, newshape, order='C') [source] 在不更改数据的情况下为数组赋予新的shape.参数 :a :array_ ...
- python分位数函数_Python numpy.quantile函数方法的使用
numpy.quantile numpy.quantile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linea ...
最新文章
- 非抢占式优先算法例题_非抢占式高优先级调度算法
- php foreach面试题,PHP引用理解之神奇的foreach面试题
- 河源电大有考计算机等级的吗,河源电大有什么专业自考也有?
- 使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?...
- Python数模笔记-NetworkX(4)最小生成树
- Java—System类和Runtime类
- 分享一些Comet开发经验
- 数据可视化工具软件哪个最好
- 计算机常用英语术语词汇表
- shell脚本中的逻辑判断
- TeamViewer的安装和使用方法
- 泛泰 A870 TWRP Recovery En英/Cn简/Tw繁
- opencv中step、step1、size、elemSize以及elemSize1区别
- 华为od统一考试B卷【按身高体重排队】C语言 实现
- DP4809国产双通道耳机音频功率放大器芯片兼容替代LM4809
- c++中Const,Const函数,Const变量,函数后面的Const
- mysql icp特性_MySQL:关于ICP特性的说明(未完)
- 后端一次性传了10w条数据,前端该如何处理?—— 面试高频
- Centos7系统下部署Gitlab+Jenkins+Docker 实现自动化部署项目
- 命令行批量删除带某关键字的文件