Skip to content

Instantly share code, notes, and snippets.

@bast
Last active January 24, 2018 10:39
Show Gist options
  • Save bast/f6780696b7121d888b653bbdd1f347aa to your computer and use it in GitHub Desktop.
Save bast/f6780696b7121d888b653bbdd1f347aa to your computer and use it in GitHub Desktop.
2D spline interpolation example using SciPy.
import sys
from math import exp
import numpy as np
from scipy.interpolate import RectBivariateSpline
import random
from time import time
def f(x, y):
return exp(-(2.0*x)**2.0 - (y/2.0)**2.0)
rmin, rmax = -1.0, 1.0
n = 500
num_samples = 10
r = [rmin + i*(rmax - rmin)/(n - 1) for i in range(n)]
z = []
for y in r:
z.append([f(y, x) for x in r])
z = np.array(z)
print('num grid points', n*n)
t0 = time()
interp_spline = RectBivariateSpline(r, r, z)
print('time spent in setting up', time() - t0)
print('num samples', num_samples)
random.seed(0)
t0 = time()
for _ in range(num_samples):
x, y = random.uniform(rmin, rmax), random.uniform(rmin, rmax)
r = interp_spline(x, y)
print('time spent in interpolating', time() - t0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment