numpy中transpose理解

  1. 先看个例子
import numpy as np
a = np.arange(16).reshape(2,2,4)
print(a)
print('='*20)
print(a.transpose(1,0,2))
  1. 结果
[[[ 0  1  2  3]
  [ 4  5  6  7]]
 [[ 8  9 10 11]
  [12 13 14 15]]]
 ====================
 [[[ 0  1  2  3]
  [ 8  9 10 11]]
 [[ 4  5  6  7]
  [12 13 14 15]]]
  1. 分析
  • transpose 中的 0,1,2a.shape 元组的下标
  • 我们从 a.shape 下手对数组元素进行坐标的转换
000 001 002 003
010 011 012 013
100 101 102 103
110 111 112 113

000 代表元素 0013 代表元素7100 代表元素 8 依次类推,我们可以通过 a[0,1,1] 取出对应元素

  • 由于我们交换的是 0,1,也就是 a.shape 元组下标的前两个,所以我们只要将坐标转换下就可以,比如 010 代表的元素 4 经过转换后则在新的数组中 100 代表 4,而 100 代表的元素 8 经过转换后则在新的数组中 010 代表 8,故元素转换后为
000 001 002 003
100 101 102 103
010 011 012 013
110 111 112 113

由于 a.shape 元组为 (2, 2, 4),只交换 1,2 下标并没有改变数组形状,故 a.transpose(1,0,2) 生成的新数组的坐标如下,只是其值改变了

000 001 002 003
010 011 012 013
100 101 102 103
110 111 112 113
  • 对于 a.transpose(2,1,0) 应该也是很好理解了。注意 a.transpose(2,1,0).shape(4,2,2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值