def cart2irregular_interp(cartgrid, values, newgrid, **kwargs):
"""
Interpolate array ``values`` defined by cartesian coordinate array
``cartgrid`` to new coordinates defined by ``newgrid`` using
nearest neighbour, linear or cubic interpolation
.. versionadded:: 0.6.0
Slow for large arrays
Keyword arguments are fed to :func:`scipy:scipy.interpolate.griddata`
Parameters
----------
cartgrid : numpy ndarray
3 dimensional array (nx, ny, lon/lat) of floats;
values : numpy 2d-array
2 dimensional array (nx, ny) of data values
newgrid : numpy ndarray
Nx2 dimensional array (..., lon/lat) of floats
kwargs : :func:`scipy:scipy.interpolate.griddata`
Returns
-------
interp : numpy ndarray
array with interpolated values of size N
"""
# TODO: dimension checking
newshape = newgrid.shape[:-1]
cart_arr = cartgrid.reshape(-1, cartgrid.shape[-1])
new_arr = newgrid.reshape(-1, newgrid.shape[-1])
if values.ndim > 1:
values = values.ravel()
interp = griddata(cart_arr, values, new_arr, **kwargs)
interp = interp.reshape(newshape)
return interp
评论列表
文章目录