You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Numpy使用技巧:如何仅转置数组最后若干维度,无需指定前置维度

Numpy 转置数组最后两个维度的简洁实现方案

最优方案:使用swapaxes方法

直接使用Numpy内置的swapaxes方法即可实现需求,该方法专门用于交换数组的两个指定轴,传入负索引就能匹配最后两个维度,完全不需要指定前置维度:

# 交换最后两个维度,返回视图无数据拷贝,效率和手动修改strides完全一致
a = a.swapaxes(-2, -1)

这个写法和你原有的transpose硬编码写法、手动修改strides+shape的效果100%一致,属于Numpy官方公开API,可读性和兼容性都远高于手动修改数组元数据的写法。

备选方案:transpose配合动态轴序列

如果你习惯用transpose实现逻辑,也可以通过动态构造轴序列省略前置维度的硬编码:

a = a.transpose(tuple(range(a.ndim - 2)) + (-1, -2))

效果验证示例

import numpy as np
a = np.random.randn(2, 3, 4, 5)
print(a.shape)  # 输出 (2, 3, 4, 5)
a_swap = a.swapaxes(-2, -1)
print(a_swap.shape) # 输出 (2, 3, 5, 4)
# 验证为无拷贝视图
print(np.shares_memory(a, a_swap)) # 输出 True

内容的提问来源于stack exchange,提问作者Sam-gege

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:39:03