Alternatives to python griddata
Question: I am using griddata to resample a numpy 2 dimensional array on a grid.

    
    
    z.shape = (1000, 1000)
    x, y = np.arange(-5, 5, 0.01), np.arange(-5, 5, 0.01)
    newx, newy = np.arange(-2, 2, 0.1), np.arange(-2, 2, 0.1)
    
    griddata((x, y), z, (newx[None, :], newy[:, None]))
    

The code should:

  * resample z (which represents an image) to a new _coarser_ or _finer_ grid
  * the new grid does not necessarily cover all of the original one. 

However griddata cannot manage a regular input grid. Does anyone know an easy
alternative?


Answer: Use any of the methods suitable for data on a grid listed in the
documentation:
<https://docs.scipy.org/doc/scipy/reference/interpolate.html#multivariate-
interpolation>

That is:

<https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.RegularGridInterpolator.html>

or
<https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.RectBivariateSpline.html>

or
<https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation.map_coordinates.html>

Note also that you are using `griddata` incorrectly. Your code corresponds to
interpolating from a line defined by your 1000 (x, y) coordinates, where each
point has 1000 values associated with it. However, interpolation to 2D from a
1D line is badly defined, and the failure results from trying to triangulate a
set of points that are along a line.

You should do

    
    
    import numpy as np
    from scipy.interpolate import griddata
    
    z = np.random.rand(100, 100)
    z.shape = (100, 100)
    x, y = np.arange(-5, 5, 0.1), np.arange(-5, 5, 0.1)
    
    xx, yy = np.meshgrid(x, y, indexing='ij')
    
    newx, newy = np.arange(-2, 2, 0.1), np.arange(-2, 2, 0.1)
    
    griddata((xx.ravel(), yy.ravel()), z.ravel(), (newx[None, :], newy[:, None]))
    

This will work correctly --- however, 1000x1000 = 1000000 points in 2D is
simply way too much data for triangulation-based unstructured interpolation
(needs large amounts of memory for the triangulation + it's slow), so you
should use the gridded data algorithms.

