title: Numpy: 3D to 2D maxtrix reshape with flattened order along one axis
body: <p>I'd like to read in very large binary files (GB+) from disk and do a reshape for further processing. The structure of the data is like that: there are F frames with each frame consisting of B blocks of the length N while N is a number. I read the data in with np.fromfile and get a 1D np.array. I want to reshape the data in a way that they are in shape (F*N,B), so that I can easily operate on blocks. 
  I have an approach that does what I want - but it uses a for-loop and builds a new array (so not very efficient): </p>
  
  <pre><code>import numpy as np
  F,B,N= 2,2,2
  Data3D = np.arange(F*B*N).reshape(F,B,N)
  Data2D = np.zeros(F*B*N).reshape(F*N,B)
  
  for i in np.arange(B):
     Data2D[:,i] = Data3D[:,i,:].ravel()
  </code></pre>
  
  <p>I don't achieve the flattened order (np.ravel() keeps the order) with a direct reshape-transformation, but I guess there is an efficient/elementary numpy approach for it.</p>