对numpy中 transpose方法的理解

先来结论: transpose方法是对shape起作用的

这里直接以三维数组为例,看代码比较直观

arr2 = np.arange(24).reshape(2,3,4)
print(arr2)
[[[ 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(arr2.transpose(0, 1, 2))
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
# arr2是一个shape为(2,3,4)的矩阵,对它进行transpose操作。
首先对矩阵的维度进行编号,矩阵三个维度编号依次为012.
而transpose函数的参数输入就是基于这个编号的,调用transpose(012),那么矩阵将不发生变化

print(arr2.transpose())
[[[ 0 12]
  [ 4 16]
  [ 8 20]]

 [[ 1 13]
  [ 5 17]
  [ 9 21]]

 [[ 2 14]
  [ 6 18]
  [10 22]]

 [[ 3 15]
  [ 7 19]
  [11 23]]]
# 如果不输入参数,直接调用transpose(),其效果就是将矩阵进行转置,
起作用等价与transpose(210),即shape从(2,3,4)变为(432)

# 以下验证我的理解,调用transpose(1, 0, 2),shape是否会从(2,3,4)变为(324print(arr2.transpose(1, 0, 2))
print(arr2.transpose(1, 0, 2).shape)
[[[ 0  1  2  3]
  [12 13 14 15]]

 [[ 4  5  6  7]
  [16 17 18 19]]

 [[ 8  9 10 11]
  [20 21 22 23]]]
(3, 2, 4)

# 最后一次验证我们的理解,调用transpose(0, 2, 1),shape从(2,3,4)变为(243print(arr2.transpose(0, 2, 1))
print(arr2.transpose(0, 2, 1).shape)
[[[ 0  4  8]
  [ 1  5  9]
  [ 2  6 10]
  [ 3  7 11]]

 [[12 16 20]
  [13 17 21]
  [14 18 22]
  [15 19 23]]]
(2, 4, 3)

以上供参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值