From: Friedrich Romstedt <friedrichromstedt@gm...>  20100225 08:27:12

Andrew, I sent this to you personally, unintentionally, and want it to be on the list too. So you have it doubled now, sorry. 2010/2/25 Andrew Charles <ac1201@...>: > I'm trying to interpolate from one grid to another using Basemap's > interp function. It seems to want the lat and lon axis of the new grid > to have the same shape: > > 3524 if xout.shape != yout.shape: > 3535 raise ValueError, 'xout and yout must have same shape!' > > The grid I'm interpolating to is 144 by 72 > > I'm calling it as interp(x,lon,lat,plon,plat) > where lon and plon are numpy arrays with shape (144,) lat has shape > (73,) plat has shape(72,) and x has shape (72, 144) > > Does interp() really only work if the target grid is square? I guess it wants a meshgrid, use e.g.: lats = len(lat) lons = len(lon) lat = lat[:, numpy.newaxis].repeat(lons, axis = 1) lon = lon[numpy.newaxis, :].repeat(lats, axis = 0)  or the other way round  lat = lat[numpy.newaxis, :].repeat(lons, axis = 0) lon = lat[:, numpy.newaxis].repeat(lats, axis = 1) depending on what axis lat and lon should respectively be associated with. A meshgrid is a sequence of coordinate grids. For each point KEY, the coordinates are MESHGRID[:, KEY]. Thus you can via meshgrids specifiy also distorted grids to interpolate to (e.g. a wavy rectangular grid or something). (I guess this is actually needed when doing Mercator to Postels or similar). Friedrich 