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

Python 3.9中NumPy索引的星号表达式报错,求兼容实现方案

解决Python 3.9+中索引时的星号表达式语法错误

问题分析

你遇到的错误源于Python 3.9及后续版本收紧了索引表达式中星号展开的语法规则,y[...,(*x)]这类写法不再被允许,但可以通过元组拼接的方式实现相同效果,同时保留...以适配任意维度的数组。

解决方案

直接将...和元组x拼接成完整的索引元组,再用于数组索引:

import numpy as np

# 获取数据
y = np.random.randn(100,100,100)

# 索引存储为元组
x = (1,2)

# Python 3.9+ 等价写法
result = y[(...,) + x]

原理说明

  • 在NumPy索引规则中,...(Ellipsis)是特殊索引对象,作为元组成员时可与其他索引值/元组直接拼接。
  • 当x=(1,2)时,(...,) + x会生成(Ellipsis, 1, 2),和你原本期望的y[...,1,2]完全等价。
  • 该写法不依赖数组具体维度,...会自动匹配剩余前置维度,完美保留原有逻辑。

验证

运行上述代码后,result与y[:,1,2]结果完全一致,且能适配任意维度的数组和任意长度的索引元组x。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:19