Подход, который я видел в numpy
функциях, заключается в создании списка slice(None)
. Замените один индексом. И преобразовать в кортеж для индексации.
In [176]: a = np.arange(24).reshape(2,3,4)
In [177]: a
Out[177]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [178]: idx = [slice(None)]*3
In [179]: idx[1] = 1
In [180]: a[tuple(idx)]
Out[180]:
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]])
In [181]: np.take(a,1,axis=1)
Out[181]:
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]])