title: Shuffle a numpy array
body: <p>I have a 2-d numpy array that I would like to shuffle. Is the best way to reshape it to 1-d, shuffle and reshape again to 2-d or is it possible to shuffle without reshaping?</p>
  
  <p>just using the random.shuffle doesn't yield expected results and numpy.random.shuffle shuffles only rows:</p>
  
  <pre><code>import random
  import numpy as np
  a=np.arange(9).reshape((3,3))
  random.shuffle(a)
  print a
  
  [[0 1 2]
   [3 4 5]
   [3 4 5]]
  
  a=np.arange(9).reshape((3,3))
  np.random.shuffle(a)
  print a
  
  [[6 7 8]
   [3 4 5]
   [0 1 2]]
  </code></pre>