python - 更新了 Numpy 索引中的 Python 星标表达式错误

标签 python python-3.x numpy indexing syntax-error

我有一些代码一直在 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/

相关文章:

python - 双索引后更改数组元素

python - 通过python中出现零来选择列表中的元素

继承类方法中的Python递归

python - Scipy odeint 给出 lsoda 警告

python - NLTK - Bigram 的计数频率

Python Django 删除当前对象

python - 将连续的 GPS 数据拆分为单独的旅程

python-3.x - ValueError:未知标签类型:在实现MLPClassifier时

python - Numpy + Python 比 MATLAB 慢 15 倍?

python - Scipy 二进制关闭 - 边缘像素失去值(value)