[Python] 维度交换函数:transpose(m,n,r)和permute(m,n,r) 您所在的位置:网站首页 python两个数互换 [Python] 维度交换函数:transpose(m,n,r)和permute(m,n,r)

[Python] 维度交换函数:transpose(m,n,r)和permute(m,n,r)

2024-07-11 21:08| 来源: 网络整理| 查看: 265

a.transpose(m,n,r)的参考博客:python的numpy中的transpose函数功能分析

a.permute(m,n,r)功能和a.transpose(m,n,r)一样。故以下以a.transpose(m,n,r)为例来讲解。

根据评论区指出,a.permute(m,n,r)是torch。

对于一维矩阵,该函数无效果。 对于二维矩阵,结果为原矩阵的转置。

对于三维矩阵则比较难理解,需要理清几个重要的概念。 首先是介绍维度的概念。 我们先生成一个ndarray。

b=np.array([[[ 0, 1, 2,3], [ 4,5,6,7], [ 8,9, 10,11]], [[12, 13, 14, 15], [16, 17,18, 19], [20, 21,22, 23]]])

再使用print(b.shape),查看其原有维度为(2, 3, 4)

维度的默认排序是(0,1,2)

由于索引从0开始,所以b的元素的索引为:

# 维度的默认排序是 (0,1,2) b=np.array([[[ 0, 1, 2,3], (0,0,0) (0,0,1) (0,0,2) (0,0,3) [ 4,5,6,7], (0,1,0) (0,1,1) (0,1,2) (0,1,3) [ 8,9, 10,11]], (0,2,0) (0,2,1) (0,2,2) (0,2,3) [[12, 13, 14, 15], (1,0,0) (1,0,1) (1,0,2) (1,0,3) [16, 17,18, 19], (1,1,0) (1,1,1) (1,1,2) (1,1,3) [20, 21,22, 23]]]) (1,2,0) (1,2,1) (1,2,2) (1,2,3)

执行以下代码,进行维度变换

c=b.transpose(2,1,0)

执行c=b.transpose(2,1,0),维度的排序由默认的(0,1,2) 变为(2,1,0)。 对应的shape由(2, 3, 4)变为(4, 3, 2)。

元素的索引变化成如下的结果。

# 维度变换表现为:元素索引的 第三个数 和 第一个数 交换位置 # b=np.array([[[ 0, 1, 2,3], (0,0,0) (1,0,0) (2,0,0) (3,0,0) # [ 4,5,6,7], (0,1,0) (1,1,0) (2,1,0) (3,1,0) # [ 8,9, 10,11]], (0,2,0) (1,2,0) (2,2,0) (3,2,0) # # [[12, 13, 14, 15], (0,0,1) (1,0,1) (2,0,1) (3,0,1) # [16, 17,18, 19], (0,1,1) (1,1,1) (2,1,1) (3,1,1) # [20, 21,22, 23]]]) (0,2,1) (1,2,1) (2,2,1) (3,2,1) # # 按索引重新排列得: # [[[ 0 12] (0,0,0) (0,0,1) # [ 4 16] (0,1,0) (0,1,1) # [ 8 20]] (0,2,0) (0,2,1) # # [[ 1 13] (1,0,0) (1,0,1) # [ 5 17] (1,1,0) (1,1,1) # [ 9 21]] (1,2,0) (1,2,1) # # [[ 2 14] (2,0,0) (2,0,1) # [ 6 18] (2,1,0) (2,1,1) # [10 22]] (2,2,0) (2,2,1) # # [[ 3 15] (3,0,0) (3,0,1) # [ 7 19] (3,1,0) (3,1,1) # [11 23]]] (3,2,0) (3,2,1)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有