Numpy多维数组切片

Jam*_*mes 8 python arrays indexing numpy multidimensional-array

假设我已经定义了一个3x3x3 numpy数组

x = numpy.arange(27).reshape((3, 3, 3))
Run Code Online (Sandbox Code Playgroud)

现在,我可以得到一个包含每个3x3子阵列的(0,1)元素的数组x[:, 0, 1],它返回array([ 1, 10, 19]).如果我有一个元组(m,n)并想要检索存储在元组中的每个子数组(0,1)的(m,n)元素,该怎么办?

例如,假设我有t = (0, 1).我试过x[:, t],但它没有正确的行为 - 它返回每个子数组的行0和1.我发现最简单的解决方案是

x.transpose()[tuple(reversed(t))].transpose()
Run Code Online (Sandbox Code Playgroud)

但我相信一定有更好的方法.当然,在这种情况下,我能做到x[:, t[0], t[1]],但不能一概而论的地方,我不知道有多少尺寸的情况下x,并t有.

HYR*_*YRY 9

你可以先创建索引元组:

index = (numpy.s_[:],)+t 
x[index]
Run Code Online (Sandbox Code Playgroud)