code: def outspiral_loop(N):
      
      # Create a 2D lattice of all points
      X,Y = numpy.meshgrid(numpy.arange(-N,N+1), numpy.arange(-N,N+1))
  
      # Flatten it
      X = numpy.ndarray.flatten(X)
      Y = numpy.ndarray.flatten(Y)
  
      # Force to an integer
      X = numpy.array(X, dtype=int)
      Y = numpy.array(Y, dtype=int)
     
      # Calculate distances
      G = numpy.sqrt(X**2+Y**2)
  
      # Combine back into an array
      out_arr = numpy.array([X,Y,G])
     
      # And order correctly
      sorted_out_arr = out_arr[:,out_arr[2].argsort()]
  
      return sorted_out_arr[:2,:].T
docs: Return a list of points that will loop outwards in a 2D lattice in terms
      of distance from a central point. So if N=2 this will be [0,0], [0,1],
      [0,-1],[1,0],[-1,0],[1,1] .... This is useful when you want to loop over
      a number of bins, but want to start in the center and work outwards.