why do we need np.squeeze()? : <p>Very often, arrays are squeezed with <code>np.squeeze()</code>. In the documentation, it says </p>

<blockquote>
  <p>Remove single-dimensional entries from the shape of a.</p>
</blockquote>

<p>However I'm still wondering: Why <em>are</em> zero and nondimensional entries in the shape of a? Or to put it differently: Why do both <code>a.shape = (2,1)</code> <em>and</em> <code>(2,)</code> exist?</p>
