转置(transpose)和轴对换

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

转置有三种方式,transpose方法、T属性以及swapaxes方法。

1 .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]])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]])

2. 高维数组

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

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

主要参考:
AbstractSky的博客
Albert Chen
经管之家

对多维数组来说,确定最底层的一个基本元素位置需要用到的索引个数即是维度。这句话的理解可以结合我索引和切片的那篇文章理解。

我是这样的理解的,比如说三维的数组,那就对维度进行编号,也就是0,1,2。这样说可能比较抽象。这里的0,1,2可以理解为对shape返回元组的索引。
比如:

In [59]: arr1 = np.arange(12).reshape(2,2,3)In [60]: arr1
Out[60]:
array([[[ 0,  1,  2],[ 3,  4,  5]],[[ 6,  7,  8],[ 9, 10, 11]]])In [61]: arr1.shape #看形状
Out[61]: (2, 2, 3) #说明这是一个2*2*3的数组(矩阵),返回的是一个元组,可以对元组进行索引,也就是0,1,2
形状 索引
2 0
2 1
3 2

所以说,transpose参数的真正意义在于这个shape元组的索引。

那么它的转置就应该是


In [62]: arr1.transpose((1,0,2))
Out[62]:
array([[[ 0,  1,  2],[ 6,  7,  8]],[[ 3,  4,  5],[ 9, 10, 11]]])

比如,数值6开始的索引是[1,0,0],变换后变成了[0,1,0]
这也说明了,transpose依赖于shape

但是,对于为什么转置最后一个索引是不动的,颇为不解。数组或者说矩阵的这块有点太抽象了。虽然我线代成绩不错,但是这玩意不太一样啊。

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]]])                                 

转载于:https://www.cnblogs.com/sunshinewang/p/6893503.html

numpy之转置(transpose)和轴对换相关推荐

  1. numpy维度交换_numpy之转置(transpose)和轴对换

    转置(transpose)和轴对换 转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制操作). 转置有三种方式,transpose方法.T属性以及swapaxes方法. 1 .T,适用于一 ...

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

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

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

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

  4. python转置_python数据分析类库系列Numpy之 数组转置和轴对换

    转置是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性 arr = np.arange(15).reshape((3, 5)) ...

  5. numpy 转置_Numpy基础:数组转置和轴对换

    转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性. In[70]:arr=np.arange(15 ...

  6. python numpy array转置_详解Numpy数组转置的三种方法T、transpose、swapaxes

    Numpy是高性能科学计算和数据分析的基础包,里面包含了许多对数组进行快速运算的标准数学函数,掌握这些方法,能摆脱数据处理时的循环. 1.首先数组转置(T) 创建二维数组data如下: 进行矩阵运算时 ...

  7. Q1.Numpy_数组、数组查询、转置和轴对换、读写文件

    安装地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/ numpy,matplotlib都是在这里下载 import numpy as np Part_1: ...

  8. python数组转置和换轴_Numpy基础:数组转置和轴对换

    转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作).数组不仅有transpose方法,还有一个特殊的T属性. In[70]:arr=np.arange(15 ...

  9. 【转】Numpy三维数组的转置与交换轴

    Numpy三维数组的转置和交换轴 感谢博主的分享   转载于:https://www.cnblogs.com/latup/p/10536213.html

  10. python中transpose函数_对numpy中的transpose和swapaxes函数详解

    transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数. 我们看如下一个numpy的数组: `arr=np.arange(16).reshape(( ...

最新文章

  1. MySQL数据表基本操作
  2. Kubernetes源码阅读笔记——Controller Manager(之三)
  3. c 服务器通信和文件传输,服务器、终端和文件传输方法
  4. 实现简单的网页间的跳转
  5. boost::geometry模块Linestring相关的测试程序
  6. hdu 1505 City Game
  7. html input不能输入小数_【Python基础(八)】输入和输出
  8. 软件工程导论 四则运算
  9. 拓端tecdat|R语言Bootstrap的岭回归和自适应LASSO回归可视化
  10. 如何使用ModSim32模拟ModbusRTU数据?
  11. SCAU高级语言程序设计--实验6 循环结构(二)(3)
  12. STM32或GD32驱动TM1637
  13. 详解GBase 8c数据库安全之数据透明加密
  14. H5viedo标签播放*.Mp4听得到音频却不显示视频的解决办法
  15. 数据库kettle,datax,DBMigration,RazorSQL几款迁移工具使用感受(以及如何迁移表的结构如主键,索引,约束等)
  16. css3动画 魔方 无限滚动
  17. ARM Uboot经历——makefile与uboot目录
  18. 使用Python批量将PDF转换成图片
  19. 【mysql】聚簇索引(聚集索引)和非聚簇索引(二级索引、辅助索引)的区别
  20. java查看so函数_java - 加入星火功能时,Eclipse不检测的Java main()函数 - SO中文参考 - www.soinside.com...

热门文章

  1. 为多孔介质的当量直径_多孔介质中单相对流换热分析的流体渗流模式
  2. webservice 接口配置_springboot整合WebService简单版
  3. C#之生成树形菜单数据
  4. hbase启动后HMaster进程自动关闭
  5. HDU 2063 过山车
  6. Puppet File资源介绍(贰拾)
  7. 导致Tomcat启动过程缓慢的原因及解决方法
  8. JAVA Map集合类简介
  9. 学习汇编语言 -王爽,自已完成的一道实试题 (1)
  10. 如何更好地控制input输入框的高度