我有一些代码一直在 Python 3.6 中运行,但是当我转到 Python 3.9 时,我收到以下错误:
SyntaxError: can't use starred expression here
我理解一些与 (*something)
形式的表达式相关的语法在 3.9 中实现,不向后兼容(例如,参见 here )。
这是我的代码尝试执行的最小工作示例:
# Get some data
y = np.random.randn(100,100,100)
# Indexes stored as a tuple
x = (1,2)
# Result I'm after
result = y[...,(*x)]
在上面的例子中,我试图返回 y[:,1,2]
,但实际上,我的元组可能有更多的值,并且我的数组可能更大。
上面的代码在Python 3.6中工作正常,但在Python 3.9中不起作用。我无法弄清楚 Python 3.9 及更高版本中的等效代码是什么。我不想假设 Y 中的维度数(例如,我想保留 ...
),但我想保留上面的行为。我怎样才能做到这一点?
最佳答案
你就快到了:
result = y[(..., *x)]
中级:
(..., *x)
# (Ellipsis, 1, 2)
关于python - 更新了 Numpy 索引中的 Python 星标表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74744567/