numpy.transpose对三维数组的转置方法

作者:LeonJin_ 时间:2023-10-11 07:32:36 

如下所示:


import numpy as np

三维数组


arr1 = np.arange(16).reshape((2, 2, 4))
#[[[ 0 1 2 3]
# [ 4 5 6 7]]

# [[ 8 9 10 11]
# [12 13 14 15]]]

arr2=arr1.transpose((1,0,2))
#[[[ 0 1 2 3]
# [ 8 9 10 11]]
#
# [[ 4 5 6 7]
# [12 13 14 15]]]

正序为(0,1,2),数组为


#[[[ 0 1 2 3]
# [ 4 5 6 7]]

# [[ 8 9 10 11]
# [12 13 14 15]]]

为什么进过tanspose(1,0,2),数组变为


#[[[ 0 1 2 3]
# [ 8 9 10 11]]
#
# [[ 4 5 6 7]
# [12 13 14 15]]]

仔细观察之后,可以看到转置后的数组和转置前的数组的区别就是第一页的第二行和第二页的第一行对换了,可是为什么?

当我用arr1[0,1,0],索引值为4

当我用arr2[1,0,0],索引值为4

对比索引参数表的变化和正序和转置序的不同似乎存在某种联系

对于arr1数组,索引参数表[0,0,x]可以表示第一页的第一行,当前两个参数对换之后,同一个元素的索引参数表并没有变化

故arr2的第一页第一行和arr1的第一页第一行相同

对于arr1数组,索引参数表[0,1,x]可以表示第一页第二行,当前两个参数对换之后,同一个元素的索引值比如[0,1,0]变为[1,0,0],

这就是解释了索引值4的索引参数表的不同

大概就是这个思路所以transpose(1,0,2),数组的第一页第二行和第二页第一行对换

后面的四种转置方式也大致是这个思路,仔细观察一下,理解起来应该不难


arr3=arr1.transpose((0,2,1))

# [[[ 0 4]
# [ 1 5]
# [ 2 6]
# [ 3 7]]
#
# [[ 8 12]
# [ 9 13]
# [10 14]
# [11 15]]]

arr4=arr1.transpose((2,0,1))
#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]]

这里要注意的是,arr4数组变成4页,这是因为页码和行码对换之后,

页码从数量2,变成了4

而行码从数量4,变成了2


arr5=arr1.transpose((2,1,0))
#[[[ 0 8]
# [ 4 12]]
#
# [[ 1 9]
# [ 5 13]]
#
# [[ 2 10]
# [ 6 14]]
#
# [[ 3 11]
# [ 7 15]]]

arr6=arr1.transpose((1,2,0))
#[[[ 0 8]
# [ 1 9]
# [ 2 10]
# [ 3 11]]
#
# [[ 4 12]
# [ 5 13]
# [ 6 14]
# [ 7 15]]]

另外,转置(2,0,1)可以看成,先转置(0,2,1)再转置(1,0,2)

转置(2,1,0)可以看成,先转置(1,0,2),然后转置(0,2,1),最后转置(1,0,2)

转置(1,2,0)可以看成,先转置(1,0,2),在转置(0,2,1)

代码可以写成


arr4=arr1.transpose(0,2,1).transpose(1,0,2)

#[[[ 0 4]
# [ 8 12]]
#
# [[ 1 5]
# [ 9 13]]
#
# [[ 2 6]
# [10 14]]
#
# [[ 3 7]
# [11 15]]]

结果一样!

来源:https://blog.csdn.net/jin739738709/article/details/76136776

标签:三维,数组,转置,numpy,transpose
0
投稿

猜你喜欢

  • 浅谈JavaScript的自动垃圾收集机制

    2023-08-13 15:18:57
  • python实现不同数据库间数据同步功能

    2024-01-18 15:58:52
  • Go语言实战学习之流程控制详解

    2024-05-09 14:57:06
  • python画图把时间作为横坐标的方法

    2021-06-17 08:13:28
  • python 中 .py文件 转 .pyd文件的操作

    2022-02-17 09:59:38
  • Python3 shelve对象持久存储原理详解

    2022-06-30 13:43:39
  • Python基础之文件操作及光标移动详解

    2022-12-01 02:23:17
  • OpenCV-PS扩散毛玻璃效果的实现代码

    2022-03-17 22:45:52
  • Javascript继承机制的设计思想分享

    2023-08-24 16:29:29
  • django中url映射规则和服务端响应顺序的实现

    2023-04-21 09:58:27
  • GO语言映射(Map)用法分析

    2024-04-28 09:17:53
  • 通过Py2exe将自己的python程序打包成.exe/.app的方法

    2021-07-05 11:05:55
  • python用fsolve、leastsq对非线性方程组求解

    2021-06-28 23:33:29
  • Python 在 VSCode 中使用 IPython Kernel 的方法详解

    2023-07-25 10:10:23
  • Tensorflow2.4从头训练Word Embedding实现文本分类

    2023-05-22 20:03:17
  • Vue+Express实现登录注销功能的实例代码

    2024-05-13 09:11:38
  • 手把手教你将Flask应用封装成Docker服务的实现

    2023-05-27 06:57:15
  • Python使用requests xpath 并开启多线程爬取西刺代理ip实例

    2023-05-01 23:36:51
  • Python中使用strip()方法删除字符串中空格的教程

    2022-08-30 16:16:09
  • Yolov5多边形标签和JSON数据格式转换

    2023-11-06 17:31:24
  • asp之家 网络编程 m.aspxhome.com