title: How to crop zero edges of a numpy array?
body: <p>I have this ugly, un-pythonic beast:</p>
  
  
  
  <pre><code>def crop(dat, clp=True):
      '''Crops zero-edges of an array and (optionally) clips it to [0,1].
  
      Example:
      &gt;&gt;&gt; crop( np.array(
      ...       [[0,0,0,0,0,0],
      ...        [0,0,0,0,0,0],
      ...        [0,1,0,2,9,0],
      ...        [0,0,0,0,0,0],
      ...        [0,7,4,1,0,0],
      ...        [0,0,0,0,0,0]]
      ...     ))
      array([[1, 0, 1, 1],
             [0, 0, 0, 0],
             [1, 1, 1, 0]])
      '''
      if clp: np.clip( dat, 0, 1, out=dat )
      while np.all( dat[0,:]==0 ):
          dat = dat[1:,:]
      while np.all( dat[:,0]==0 ):
          dat = dat[:,1:]
      while np.all( dat[-1,:]==0 ):
          dat = dat[:-1,:]
      while np.all( dat[:,-1]==0 ):
          dat = dat[:,:-1]
      return dat
      # Below gets rid of zero-lines/columns in the middle
      #+so not usable.
      #dat = dat[~np.all(dat==0, axis=1)]      
      #dat = dat[:, ~np.all(dat == 0, axis=0)]
  </code></pre>
  
  <p>How do I tame it, and make it beautiful?</p>