title: what does numpy ndarray shape do?
body: <p>I have a simple question about the .shape function, which confused me a lot. </p>
  
  <pre><code>a = np.array([1, 2, 3])   # Create a rank 1 array
  print(type(a))            # Prints "&lt;class 'numpy.ndarray'&gt;"
  print(a.shape)            # Prints "(3,)"
  
  b = np.array([[1,2,3],[4,5,6]])    # Create a rank 2 array
  print(b.shape)                     # Prints "(2, 3)"
  </code></pre>
  
  <p>What did the .shape exactly do? count how many rows, how many columns,
  then the a.shape suppose to be, (1,3), one row three columns, right?</p>