[SciPy-user] 2D Interpolation
Pauli Virtanen
pav at iki.fi
Fri Jun 27 16:13:21 EDT 2008
Hi,
Fri, 27 Jun 2008 14:13:22 -0400, Ryan May wrote:
> Can anyone help me use scipy.interpolate correctly. Here's my problem:
> I'm trying to make a 2D lookup table to save some calculations. The two
> parameters over which the lookup table is generated are independent and
> I have complete control over how I divide up the domain. Using this
> lookup table, I'd like to then calculate values over an unstructured set
> of parameter values (ie. a list of pairs of parameter values). Is there
> a function in scipy.interpolate that can help here? What I'd really like
> to be able to do is generate an interpolator object from my 2D array,
> and then pass a pair of 1D arrays to the object and have it return 1D
> array of values.
I don't think there are currently any functions that do that, but
certainly we'd like to have them.
I created a Scipy enhancement ticket for this feature:
http://scipy.org/scipy/scipy/ticket/693
Attached to it is a quick patch that implements the necessary loop on the
Fortran side. I suspect the patch needs further work, as there possibly
are faster ways to vectorise this piece of computation than simply
calling fpbisp at each point separately. (If someone more familiar with
the spline code wants to bless it, I can commit it, though...)
Currently, you can use
spl = scipy.interpolate.RectBivariateSpline(xi,yi,zi)
z = scipy.array([spl(xp, yp)[0,0] for xp, yp in zip(x, y)])
The Python overhead isn't as bad as it looks like; moving the loop to
the Fortran side gains only a factor of 5 improvement in speed.
--
Pauli Virtanen
More information about the SciPy-User
mailing list