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

如何基于张量形状优雅生成带不同新增轴的np.arange序列列表

实现方案

下面给出两种简洁高效的实现方式,都能适配任意维度的输入张量t:

1. 列表推导式实现(完全匹配自定义逻辑)

直接通过索引位插入指定数量的新轴(None等价于np.newaxis),一行即可完成构造:

import numpy as np

# 示例输入张量
t = np.random.rand(2, 3, 4)

# 核心实现
result = tuple(np.arange(s)[(...,) + (None,) * (len(t.shape) - 1 - idx)] for idx, s in enumerate(t.shape))

逻辑说明:(...,) 指代np.arange生成的一维数组的原有轴,后面拼接对应数量的None实现右轴拓展,拓展轴的数量随索引逐次递减,完全符合需求。

2. Numpy原生接口实现(更简洁,性能更优)

可以直接用np.ogrid(开放网格生成接口)直接生成符合广播要求的坐标元组,逻辑更简洁:

result = tuple(np.ogrid[[slice(0, s) for s in t.shape]])

该方法返回的结果和示例输出完全一致,且是numpy原生优化的实现,处理高维张量时效率更高。


内容的提问来源于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.02 06:48:03