[SciPy-User] 2D interpolate issues
Tue Mar 22 17:56:43 CDT 2011
I have a few questions regarding interpolate.interp2d, as I would like
to do some bilinear interpolation on 2D rasters. I'll illustrate my
issues with an example:
from scipy import interpolate
x = [100, 110, 120, 130, 140]
y = [200, 210, 229, 230]
z = [[ 1, 2, 3, 4, 5],
First, why do I get an error with the following?
>>> f1 = interpolate.interp2d(x, y, z, kind='linear', bounds_error=True)
Warning: No more knots can be added because the additional knot
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=8,4 m=20 fp=263.568959 s=0.000000
I do not get an error if I swap x, y:
>>> f2 = interpolate.interp2d(y, x, z, kind='linear', bounds_error=True)
but this is incorrect, as my z list of lists has 5 columns or x-values
and 4 rows or y-values.
Do I need to transpose my z?
za = numpy.array(z).T
f3 = interpolate.interp2d(x, y, za, kind='linear', bounds_error=True)
The example in http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html
does not use a transposed array. From the documented example, we can
see that intuitively len(x) = columns and len(y) = rows in z
Secondly, why does bounds_error do nothing?
I've supplied x and y values far outside the range, and I do not get
an error. Similarly, setting bounds_error=True, fill_value is not
returned when x and y are out of bounds, as documented.
Are these user errors or bugs?
More information about the SciPy-User