bundles / scipy latest / scipy / interpolate / _fitpack2 / SmoothSphereBivariateSpline
class
scipy.interpolate._fitpack2:SmoothSphereBivariateSpline
Signature
class SmoothSphereBivariateSpline ( theta , phi , r , w = None , s = 0.0 , eps = 1e-16 ) Members
Summary
Smooth bivariate spline approximation in spherical coordinates.
Extended Summary
Parameters
theta, phi, r: array_like1-D sequences of data points (order is not important). Coordinates must be given in radians. Theta must lie within the interval
[0, pi], and phi must lie within the interval[0, 2pi].w: array_like, optionalPositive 1-D sequence of weights.
s: float, optionalPositive smoothing factor defined for estimation condition:
sum((w(i)*(r(i) - s(theta(i), phi(i))))**2, axis=0) <= sDefaults=len(w)which should be a good value if1/w[i]is an estimate of the standard deviation ofr[i].eps: float, optionalA threshold for determining the effective rank of an over-determined linear system of equations.
epsshould have a value within the open interval(0, 1), the default is 1e-16.
Notes
For more information, see the FITPACK_ site about this function.
Array API Standard Support
SmoothSphereBivariateSpline is not in-scope for support of Python Array API Standard compatible backends other than NumPy.
See dev-arrayapi for more information.
Examples
Suppose we have global data on a coarse grid (the input data does not have to be on a grid):import numpy as np theta = np.linspace(0., np.pi, 7) phi = np.linspace(0., 2*np.pi, 9) data = np.empty((theta.shape[0], phi.shape[0])) data[:,0], data[0,:], data[-1,:] = 0., 0., 0. data[1:-1,1], data[1:-1,-1] = 1., 1. data[1,1:-1], data[-2,1:-1] = 1., 1. data[2:-2,2], data[2:-2,-2] = 2., 2. data[2,2:-2], data[-3,2:-2] = 2., 2. data[3,3:-2] = 3. data = np.roll(data, 4, 1)✓
lats, lons = np.meshgrid(theta, phi) from scipy.interpolate import SmoothSphereBivariateSpline lut = SmoothSphereBivariateSpline(lats.ravel(), lons.ravel(), data.T.ravel(), s=3.5)✓
data_orig = lut(theta, phi)
✓fine_lats = np.linspace(0., np.pi, 70) fine_lons = np.linspace(0., 2 * np.pi, 90)✓
data_smth = lut(fine_lats, fine_lons)
✓import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(131)✓
ax1.imshow(data, interpolation='nearest')
✗ax2 = fig.add_subplot(132)
✓ax2.imshow(data_orig, interpolation='nearest')
✗ax3 = fig.add_subplot(133)
✓ax3.imshow(data_smth, interpolation='nearest')
✗plt.show()
✓
See also
- BivariateSpline
a base class for bivariate splines.
- LSQBivariateSpline
a bivariate spline using weighted least-squares fitting
- LSQSphereBivariateSpline
a bivariate spline in spherical coordinates using weighted least-squares fitting
- RectBivariateSpline
a bivariate spline over a rectangular mesh.
- RectSphereBivariateSpline
a bivariate spline over a rectangular mesh on a sphere
- SmoothBivariateSpline
a smoothing bivariate spline through the given points
- UnivariateSpline
a smooth univariate spline to fit a given set of data points.
- bisplev
a function to evaluate a bivariate B-spline and its derivatives
- bisplrep
a function to find a bivariate B-spline representation of a surface
Aliases
-
scipy.interpolate.SmoothSphereBivariateSpline