title: Problem with 2D interpolation in SciPy, non-rectangular grid
body: <p>I've been trying to use scipy.interpolate.bisplrep() and scipy.interpolate.interp2d() to find interpolants for data on my (218x135) 2D spherical-polar grid. To these I pass 2D arrays, X and Y, of the Cartesian positions of my grid nodes. I keep getting errors like the following (for linear interp. with interp2d):</p>
  
  <p>"Warning:     No more knots can be added because the additional knot would coincide
      with an old one. Probably cause: s too small or too large a weight
      to an inaccurate data point. (fp>s)
      kx,ky=1,1 nx,ny=4,5 m=29430 fp=1390609718.902140 s=0.000000"</p>
  
  <p>I get a similar result for bivariate splines with the default value of the smoothing parameter s etc. My data are smooth. I've attached my code below in case I'm doing something obviously wrong.</p>
  
  <p>Any ideas?
  Thanks!
  Kyle</p>
  
  <pre><code>class Field(object):
    Nr = 0
    Ntheta = 0
    grid = np.array([])
  
    def __init__(self, Nr, Ntheta, f):
      self.Nr = Nr
      self.Ntheta = Ntheta
      self.grid = np.empty([Nr, Ntheta])
      for i in range(Nr):
        for j in range(Ntheta):
          self.grid[i,j] = f[i*Ntheta + j]
  
  
  def calculate_lines(filename):
    ri,ti,r,t,Br,Bt,Bphi,Bmag = np.loadtxt(filename, skiprows=3,\
      usecols=(1,2,3,4,5,6,7,9), unpack=True)
    Nr = int(max(ri)) + 1
    Ntheta = int(max(ti)) + 1
  
    ### Initialise coordinate grids ###
    X = np.empty([Nr, Ntheta])
    Y = np.empty([Nr, Ntheta])
    for i in range(Nr):
      for j in range(Ntheta):
        indx = i*Ntheta + j
        X[i,j] = r[indx]*sin(t[indx])
        Y[i,j] = r[indx]*cos(t[indx])
  
    ### Initialise field objects ###
    Bradial = Field(Nr=Nr, Ntheta=Ntheta, f=Br)
  
    ### Interpolate the fields ###
    intp_Br = interpolate.interp2d(X, Y, Bradial.grid, kind='linear')
  
    #rbf_0 = interpolate.Rbf(X,Y, Bradial.grid, epsilon=2)
  
    return
  </code></pre>