numpy:按数组索引数组

ora*_*nge 5 python arrays numpy

>>> idx = np.random.randint(2, size=(9, 31))
>>> a = np.random.random((9, 31, 2))
>>> a[idx].shape
(9, 31, 31, 2)
Run Code Online (Sandbox Code Playgroud)

为什么上述方法至少不会产生(9, 31, 1)甚至更好的形状(9, 31)?如何获取基于中的值返回的选择idx

更新资料

这也许是一个更具体且希望是模拟的示例:假定此数组

a = np.asarray([[1, 2], [3, 4], [5, 6], [7, 8]])
Run Code Online (Sandbox Code Playgroud)

我将如何选择数组[1, 4, 5, 8](即每行的第0、1、0、1个元素)?