在numpy数组中得到第k个维度的第i个切片

Nic*_*mer 6 python arrays numpy

我有一个n维度numpy数组,我想获得-th维度的i第一个切片k.必须有比这更好的东西

# ... 
elif k == 5:
    b = a[:, :, :, :, :, i, ...]
# ...
Run Code Online (Sandbox Code Playgroud)

use*_*ica 11

b = a[(slice(None),) * k + (i,)]
Run Code Online (Sandbox Code Playgroud)

手动构造索引元组.

Python语言参考中所述,表单的表达式

a[:, :, :, :, :, i]
Run Code Online (Sandbox Code Playgroud)

转换为

a[(slice(None), slice(None), slice(None), slice(None), slice(None), i)]
Run Code Online (Sandbox Code Playgroud)

我们可以通过直接构建该元组而不是使用切片符号来实现相同的效果.(有一个小小的警告,即构建元组直接生成a[(i,)]而不是a[i]for k=0,但是NumPy会为标量处理这些内容i.)