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

如何根据整数i构造numpy数组切片,将1置于指定索引位置?

解决Numpy动态位置切片的问题

直接通过动态构造切片元组就能实现你要的效果,核心思路是用slice(None)代替冒号:,用Ellipsis代替...,然后按需求拼接成元组:

import numpy as np

def dynamic_slice(x, i):
    # 构造切片元组:前i个位置是冒号,第i个位置是1,剩余维度用...填充
    slice_tuple = (slice(None),) * i + (1,) + (Ellipsis,)
    return x[slice_tuple]

验证示例

比如你提到的i=3的情况:

# 创建一个6维测试数组
x = np.random.rand(2, 3, 4, 5, 6, 7)
result = dynamic_slice(x, 3)
print(result.shape)  # 输出 (2, 3, 4, 6, 7)

这和直接写x[:, :, :, 1, ...]的结果完全一致——第3个索引位置(从0开始计数)取固定值1,其余维度全量保留。

原理说明

  • slice(None)是Numpy中冒号:的底层表示,两者完全等价;
  • Ellipsis(即...)会自动匹配数组剩余的所有维度,用冒号切片填充,省去了手动写多个:的麻烦;
  • Numpy允许直接用元组作为索引参数,所以我们可以通过拼接元组的方式动态生成任意复杂的切片规则。

内容的提问来源于stack exchange,提问作者Onion

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:36