numpy之高维数组的转置:transpose方法——通过几何体来迅速理解
首先说明,这个方法是博主在理解高维数组转置的transpose
方法时所提出的,因此严谨性和正确性有待考察,但私以为完全可以这样理解,因此做个记录,如果对你有帮助的话欢迎点赞收藏,如果认为有错误的话请提出批评,督促改进。
transpose
方法是数组用来转置的一种方法,尤其对于高维数组,transpose
需要得到一个由轴编号组成的元组才能对这些轴进行转置。那么是怎么根据这个轴来完成转置的呢?
我们来看下面这个三维数组:
arr = np.arange(16).reshape((2, 2, 4))
arrarray([[[ 0, 1, 2, 3],[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],[12, 13, 14, 15]]])
对arr
进行转置:
arr.transpose((1, 0, 2))array([[[ 0, 1, 2, 3],[ 8, 9, 10, 11]],[[ 4, 5, 6, 7],[12, 13, 14, 15]]])
以上面这个 2 组 2 行 4 列的三维数组为例,试图通过在笛卡尔坐标系下想象立方体的变换来理解,因此有下面的想法。首先要知道transpose
的参数表示 shape 的形状,对于这个例子来说,即2[0]
、2[1]
、4[2]
,用transpose(1,0,2)
转置后变为2[1]
、2[0]
、4[2]
。这句话看起来很有道理,但究竟是怎么变换的呢?通过这句话仍然难以想象,所以我们把这个数组放在三维坐标下来看:
在这里我假设这个三维数组在空间中按上图的方式排列,数组里每个数字存放在一个小立方体中,更具体一点,我们的俯视图如下:
有了这个图就好理解了,我们通过transpose
的方法,将数组的排列方式由2[0]
、2[1]
、4[2]
变为了2[1]
、2[0]
、4[2]
,在坐标系中就是z[0]
、x[1]
、y[2]
变为了z[1]
、x[0]
、y[2]
,也就是说交换了x
轴和z
轴!
整个过程中y
轴没有参与,所以它们的纵坐标不会改变,为了简便表示,我们只考虑x
轴和z
轴。在这里我以小立方体的个数来作为坐标,即把它视为一个点来计算坐标。如果将 4 这个点的坐标在xOz
(O为坐标原点)平面内视为(2,1)
,那么经过transpose
后,它的坐标应变为(1,2)
,同理,和 4 同一行的数字也经过同样的变换。而数字 12 的坐标可视为(2,2)
,变换后仍为(2,2)
。
再回到上图中看,这时我们应该就很容易明白transpose
这个方法对数组进行了怎样的变换:数组[4,5,6,7]
和数组[8,9,10,11]
在xOz
平面内横纵坐标互换,因此两个数组进行了位置交换。而数组[0,1,2,3]
和数组[12,13,14,15]
由于横纵坐标相同,所以交换后仍在原位置!
变换后的俯视图如下:
最后,将以立方体形式表示的数组以输入时候的顺序输出,就得到转换后的数组:
array([[[ 0, 1, 2, 3],[ 8, 9, 10, 11]],[[ 4, 5, 6, 7],[12, 13, 14, 15]]])
以上就是博主关于transpose
这个方法的理解,至于更高维的变换,可以用类似的方式来思考,考虑为一个坐标变换问题,也许就可以更具体的理解到如何变换。
不足之处,欢迎指正。
numpy之高维数组的转置:transpose方法——通过几何体来迅速理解相关推荐
- Python中numpy读取高维数组中特定的行,列
直接跑代码,看懂代码,跑一遍,你自然懂了. ''' 多维矩阵按括号的层级,从外向内,一次是第1,2,3,...维b[]内用逗号将各维分开,分别代表第1,2,3...维元素 逗号把数组分成两维度,左边是 ...
- Python NumPy 基础:数组和向量计算
文章目录 1.1 NumPy 的ndarray:一种多维数组对象 创建ndarray ndarray数据类型 NumPy 数组的运算 基本的索引和切片 切片索引 布尔型索引 花式索引 数组转置和轴对换 ...
- python 数据分析5 NumPy 基础:数组和矢量计算
系列文章:Python 数据分析 文章目录 五.NumPy 基础:数组和矢量计算 1.n维数组对象 ndarray 创建 dtype 数组运算 基本的索引和切片 一维数组 二维数组 布尔型索引 花式索 ...
- Python数据分析学习四 NumPy基础:数组和矢量计算
Python数据分析学习系列四NumPy基础:数组和矢量计算 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下 ...
- python中numpy.array_python中数组(numpy.array)的基本操作
本文部分内容参考Daetalus的博客. 为什么要用numpy Python中提供了list容器,可以当作数组使用.但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简 ...
- python三维数组转置_numpy.transpose对三维数组的转置方法
如下所示: import numpy as np 三维数组 arr1 = np.arange(16).reshape((2, 2, 4)) #[[[ 0 1 2 3] # [ 4 5 6 7]] # ...
- numpy中矩阵的转置_NumPy矩阵transpose()-Python中数组的转置
numpy中矩阵的转置 The transpose of a matrix is obtained by moving the rows data to the column and columns ...
- numpy维度交换_numpy之转置(transpose)和轴对换
转置(transpose)和轴对换 转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作). 转置有三种方式,transpose方法.T属性以及swapaxes方法. 1 .T,适用于一 ...
- numpy中的转置Transpose和.T以及轴对换swapaxis
简 介: 本文对于 numpy中的转置Transpose和.T以及轴对换swapaxis 中关于numpy矩阵的轴交换函数进行了测试.并对于深度学习中的图像数据进行处理. 参考文章:https://b ...
最新文章
- windows 切换 默认 jdk 版本
- JAVA.Properties了解一下
- nodejs登陆模拟
- 解决ubuntu下eclipse 经常崩溃的问题
- mysql 函数重载_[赋值]函数,变量,重载 ,_第1页_169IT
- p2psearcher怎么用
- RTP协议解析和H264码流提取
- ubuntu16.04初安装,ROS kinetic,安装ros,配置ros环境
- linux命令行连接蓝牙音箱,树莓派4b连接蓝牙音箱/耳机播放音乐 命令行
- 问卷星投票如何刷投票?【请勿非法使用】
- Acwing语法基础课第六次课-循环判断练习题,连续整数相加,约数,PUM,余数,六个奇数,乘法表,
- 工业质检-缺陷检测数据集
- html2day(合并单元格,有序、无序列表,input、select、textarea表单)
- Leecode-动态规划专题训练
- K2P没有无线信号LED灯不亮,居然成功修复
- 杂七杂八,乱七八糟的大杂烩!
- java实现创蓝短信
- C. Interesting Sequence
- RecyclerView实现多种布局样式
- 计算机输入法入门,电脑入门——第章 学习中文输入法.doc
热门文章
- Error: listen EADDRINUSE: address already in use :::8080
- Vue项目设置代理解决开发环境下的跨域问题
- 详细分析图像形态学操作
- 浏览器中的机器学习:使用预训练模型
- .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]...
- 给初级拍摄者的十条好建议
- Qt程式异常崩溃处理技巧(Win)
- nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步
- 多个Activity关闭问题
- WPF 类型“System.ComponentModel.ISupportInitialize”在未被引用的程序集中定义。