如何对高维矩阵进行转置?

在线性代数课程中,我们一般只需要对二维矩阵进行转置,这是非常简单的。但在编写代码时,我们可能遇到高维(三维、四维等)矩阵转置的问题,那么此时该如何对其进行转置呢?最关键的地方,就是搞清楚在转置过程中,什么位置关系是变化的,什么位置关系是不变的。下面举例说明。

三维矩阵

三位矩阵的转置比较简单,因为它的第二个维度是不发生变化的,实质上只是交换了第一个和第三个维度。

如下面这个 2 × 2 × 3 2\times 2\times 3 2×2×3 的矩阵:

[[[ 1.  2.  3.]
  [ 4.  5.  6.]]

 [[ 7.  8.  9.]
  [10. 11. 12.]]]

在这个矩阵中我们称每个 2 × 3 2\times 3 2×3 的小矩阵为一个矩阵块,2是这个矩阵块的行数,3是这个矩阵块的列数。也就是说,对于 2 × 2 × 3 2\times 2\times 3 2×2×3 的这个大矩阵,第一个维度表示矩阵块的个数,第二个维度表示矩阵块中行的个数,第三个维度表示矩阵块中列的个数。

对它进行转置时,我们要先明确转置后的矩阵形状为 3 × 2 × 2 3\times 2\times 2 3×2×2。我们可以先把它的整体框架画出:

因为第二个维度是不发生变化的,所以每个矩阵块中的行不会变化,也就是说,1下面仍然是4,2下面仍然是5……

[[[  .   .]
  [  .   .]]

 [[  .   .]
  [  .   .]]
  
 [[  .   .]
  [  .   .]]]

因为第一个维度和第三个维度发生了变化,所以1后面不再是2,1和4下面不再是7和10。要实现这个变化,只需要将2和5与7和10交换一下即可,这就是转置后的第一个矩阵块,如此重复,得到转置后的矩阵为:

[[[  1.   7.]
  [  4.  10.]]

 [[  2.   8.]
  [  5.  11.]]
  
 [[  3.   9.]
  [  6.  12.]]]

四维矩阵

对于四维矩阵,我们可以先对中间两个维度进行转置,再对第一个和最后一个维度进行转置。
下面是一个形状为 2 × 2 × 2 × 2 2\times 2\times 2\times 2 2×2×2×2 的矩阵:

[[[[ 1.  2.]
   [ 3.  4.]]

  [[ 5.  6.]
   [ 7.  8.]]]


 [[[ 9. 10.]
   [11. 12.]]

  [[13. 14.]
   [15. 16.]]]]

我们先对中间两个维度转置,这样一来第一个维度就是不变的,所以我们可以将这个矩阵分成两个形状为 2 × 2 × 2 2\times 2\times 2 2×2×2 的矩阵分别转置,然后再合并在一起。

跟对三维矩阵进行转置的步骤一样,对于每个矩阵来说,只有列维度是不变的,也就是说,1后面仍然是2,但1下面不能是3,1和3下面也不再是5和7。所以,我们只要把3和4与5和6交换一下即可,最终得到矩阵:

[[[[ 1.  2.]
   [ 5.  6.]]

  [[ 3.  4.]
   [ 7.  8.]]]


 [[[ 9. 10.]
   [13. 14.]]

  [[11. 12.]
   [15. 16.]]]]

然后,我们要对第一个和最后一个维度进行转置,此时需要保证:1下面仍然是5,1和5下面仍然是3和7,1后面不再是2,1、5、3和7下面不再是9、13、11和15。所以,我们只需要将2、6、4、8与9、13、11、15交换一下即可,最终得到结果:

[[[[ 1.,  9.],
   [ 5., 13.]],

  [[ 3., 11.],
   [ 7., 15.]]],


 [[[ 2., 10.],
   [ 6., 14.]],

  [[ 4., 12.],
   [ 8., 16.]]]]
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cofisher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值