Python Numpy:如何快速推导transpose逆操作对应的轴序列
numpy转置逆操作轴序列的快速推导方法
推导逻辑非常简单,核心是找两次转置的轴映射关系:
- 假设第一次转置用的轴序列为
axes,这里你的例子里axes = (2,0,1),它的映射规则是:- 转置后得到的y的第0轴 → 对应原数组x的第2轴
- y的第1轴 → 对应x的第0轴
- y的第2轴 → 对应x的第1轴
- 逆操作需要的轴序列
inv_axes要满足:x的第k轴对应y的第inv_axes[k]轴,我们直接按x的轴顺序匹配对应y的轴位置即可:- x的第0轴在y的第1位 → inv_axes[0] = 1
- x的第1轴在y的第2位 → inv_axes[1] = 2
- x的第2轴在y的第0位 → inv_axes[2] = 0
最终得到的inv_axes = (1,2,0),和你用到的正确序列完全一致。
如果不想手动推导,直接用numpy的argsort方法即可一行计算得到逆轴序列:
import numpy as np # 定义第一次转置的轴序列 axes = (2,0,1) # 计算逆轴序列 inv_axes = tuple(np.argsort(axes)) print(inv_axes) # 输出 (1, 2, 0)
你可以直接用这个方法验证你的示例:
x = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) y = np.transpose(x, axes=(2,0,1)) # 用逆序列还原x x_restored = np.transpose(y, inv_axes) print(np.array_equal(x, x_restored)) # 输出 True,证明还原正确
内容的提问来源于stack exchange,提问作者Sam-gege
相关产品推荐
相关产品推荐

