Вероятно, это проще всего сделать x[None, 10, :]
или эквивалентно (но более читабельно) x[np.newaxis, 10, :]
.
Что касается того, почему это не по умолчанию, лично я нахожу, что постоянное наличие массивов с одноэлементными измерениями очень быстро раздражает. Я предполагаю, что тупые разработчики чувствовали то же самое.
Кроме того, широковещательные массивы очень хорошо обрабатываются, поэтому обычно нет особых причин сохранять размер массива, из которого получен фрагмент. Если вы сделали, то такие вещи, как:
a = np.zeros((100,100,10))
b = np.zeros(100,10)
a[0,:,:] = b
либо не сработает, либо будет гораздо сложнее реализовать.
(Или, по крайней мере, это мое предположение о том, что недоуменный разработчик объясняет необходимость отбрасывать размерную информацию при нарезке)