Очень часто массивы сжимаются с помощью np.squeeze(). В документации говорится:
Удалить одномерные записи из формы.
Однако мне все еще интересно: почему нулевые и неразмерные записи в форме a? Или иначе: зачем существуют a.shape = (2,1) и (2,)?