interpn(points, values, xi, method='linear', bounds_error=True, fill_value=nan)
Strictly speaking, not all regular grids are supported - this function works on rectilinear grids, that is, a rectangular grid with even or uneven spacing.
In the case that xi.ndim == 1
a new axis is inserted into the 0 position of the returned array, values_x, so its shape is instead (1,) + values.shape[ndim:]
.
If the input data is such that input dimensions have incommensurate units and differ by many orders of magnitude, the interpolant may have numerical artifacts. Consider rescaling the data before interpolation.
The points defining the regular grid in n dimensions. The points in each dimension (i.e. every elements of the points tuple) must be strictly ascending or descending.
The data on the regular grid in n dimensions. Complex data can be acceptable.
The coordinates to sample the gridded data at
The method of interpolation to perform. Supported are "linear", "nearest", "slinear", "cubic", "quintic", "pchip", and "splinef2d". "splinef2d" is only supported for 2-dimensional data.
If True, when interpolated values are requested outside of the domain of the input data, a ValueError is raised. If False, then fill_value is used.
If provided, the value to use for points outside of the interpolation domain. If None, values outside the domain are extrapolated. Extrapolation is not supported by method "splinef2d".
Interpolated values at xi. See notes for behaviour when xi.ndim == 1
.
Multidimensional interpolation on regular or rectilinear grids.
LinearNDInterpolator
NearestNDInterpolator
RectBivariateSpline
RegularGridInterpolator
:None:None:`interpn`
scipy.ndimage.map_coordinates
import numpy as np
from scipy.interpolate import interpn
def value_func_3d(x, y, z):
return 2 * x + 3 * y - z
x = np.linspace(0, 4, 5)
y = np.linspace(0, 5, 6)
z = np.linspace(0, 6, 7)
points = (x, y, z)
values = value_func_3d(*np.meshgrid(*points, indexing='ij'))
point = np.array([2.21, 3.12, 1.15])
print(interpn(points, values, point))
Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.
Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)
SVG is more flexible but power hungry; and does not scale well to 50 + nodes.
All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them