如何调整(N,4,4)形状三维NumPy数组的轴顺序得到指定转置结果
三维数组轴顺序调整解决方案
你当前需要实现的是保留样本维度不变,对每个样本对应的二维矩阵做转置操作,具体实现如下:
实现原理
形状为(N,4,4)的数组三个轴编号从左到右依次为:
- 轴0:样本维度,长度为N
- 轴1:单样本二维矩阵的行维度,长度为4
- 轴2:单样本二维矩阵的列维度,长度为4
目标效果仅需要交换轴1和轴2的顺序,保持轴0不变即可。
实现方法
方法1:使用np.swapaxes
直接指定交换1、2两个轴即可,代码如下:
import numpy as np # arr为原始(N,4,4)形状的数组 res = np.swapaxes(arr, 1, 2)
方法2:使用np.transpose
手动指定所有轴的新顺序为(0,2,1),代码如下:
import numpy as np # arr为原始(N,4,4)形状的数组 res = np.transpose(arr, (0, 2, 1))
效果验证
你可以用以下代码验证转换结果是否符合预期:
# 构造测试用的三维数组 arr = np.array([ [[1.35, 10.30, 2.25, 17.21], [1.29, 9.06, 2.21, 15.47], [1.37, 9.74, 2.04, 14.44], [0, 0, 0, 0]] ]) # 执行转换 res = np.swapaxes(arr, 1, 2) # 输出转换后的第一个样本 print(res[0])
输出结果为:
[[ 1.35 1.29 1.37 0. ] [10.3 9.06 9.74 0. ] [ 2.25 2.21 2.04 0. ] [17.21 15.47 14.44 0. ]]
和你给出的目标结果完全一致。
内容的提问来源于stack exchange,提问作者E. hendrix
相关产品推荐
相关产品推荐

