On Fri, Apr 30, 2010 at 12:18 PM, Salim, Fadhley (CA-CIB) <[email protected]> wrote: > I'm trying to port a program which currently uses a hand-rolled C++ > interpolator (developed by a mathematician colleage) over to use the > interpolators provided by scipy. I'd like to use or wrap the scipy > interpolator so that it's behavior is as close as possible behavior to > our old interpolator. > > A key difference between the two functions is that in our original > interpolator - if the input value is above or below the input range, our > original interpolator will extrapolate the result. If you try this with > the scipy interpolator it raises a ValueError. Consider this program as > an example: > > # EXAMPLE > import numpy as np > from scipy import interpolate > > x = np.arange(0,10) > y = np.exp(-x/3.0) > f = interpolate.interp1d(x, y) > > print f(9) > print f(11) ##### Causes ValueError, because it's greater than max(x) # > END OF EXAMPLE > > In the example above, I'd like the last line not to raise a ValueError, > but to return a value calculated from the gradient of the line between > f(x[-2]) and f(x[-1]). > > Is there a sensible way to make it so that instead of crashing, the > final line will simply do a linear extrapolate, continuing the gradients > defined by the first and last pairs of input data-points to infinity? > > I know that this is a simple enough function to write myself, however > I'd rather not re-invent the wheel, especially as if I wanted to > introduce new basic math functions into our library they would need to > be validated by a number of gate-keepers before they were permitted into > our library! > > I'm on Python 2.4, scipy 0.7 on Windows XP, 32bit > > Incidentally, I have seen this tutorial which has a "left" and "right" > argument on the interpolator. This does not seem to exist on any version > of the interp1d function which I can use on Windows Python 2.4 - can > anybody speculate which version of Scipy this tutorial is intended for? > http://projects.scipy.org/scipy/browser/branches/Interpolate1D/docs/tuto > rial.rst?rev=4591
Interesting question, after renaming, the branch is at http://projects.scipy.org/scipy/browser/branches/interpolate?rev= Does anyone know what the purpose and status of this branch is? Josef > > Sal > > This email does not create a legal relationship between any member of the > Crédit Agricole group and the recipient or constitute investment advice. > The content of this email should not be copied or disclosed (in whole or > part) to any other person. It may contain information which is > confidential, privileged or otherwise protected from disclosure. If you are > not the intended recipient, you should notify us and delete it from your > system. Emails may be monitored, are not secure and may be amended, destroyed > or contain viruses and in communicating with us such conditions are accepted. > Any content which does not relate to business matters is not endorsed by us. > > Crédit Agricole Corporate and Investment Bank is authorised by the Comité des > Etablissements de Crédit et des Entreprises d'Investissement (CECEI) and > supervised by the Commission Bancaire in France and subject to limited > regulation by the Financial Services Authority. > Details about the extent of our regulation by the Financial Services > Authority are available from us on request. > Crédit Agricole Corporate and Investment Bank is incorporated in France with > limited liability and registered in England & Wales. Registration number: > FC008194. > Registered office: Broadwalk House, 5 Appold Street, London, EC2A 2DA. > > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
