When you indicate how you do it, NumPy does not interpret it as a choice of those indicators of each dimension. Instead, NumPy passes arguments to each other:
a[(0,1), (1, 3), 1] -> a[array([0, 1]), array([1, 3]), array([1, 1])]
, a[i, j, k][x] == a[i[x], j[x], k[x]].
, , , , (2, 2) shape (2,). , (2, 1), (1, 2) (2,), - . numpy.ix_ , . a[np.ix_([0, 1], [1, 3], [1])] , a[[0, 1], [1, 3], [1]], , a[[0, 1], [1, 3], 1], :
>>> a[np.ix_([0, 1], [1, 3], [1])]
array([[[ 3],
[ 7]],
[[13],
[17]]])
>>> a[np.ix_([0, 1], [1, 3]) + (1,)]
array([[ 3, 7],
[13, 17]])
>>> a[np.ix_([0, 1], [1, 3], [1])][:, :, 0]
array([[ 3, 7],
[13, 17]])