fullseye

interp_scattered — MATH interp_poly op

使い方

Values at query from scattered samples — sensor nets, boreholes, weather.

:func:interp_linear and :func:interp_cubic need samples on a sorted 1-D axis. A great deal of measurement does not arrive that way: temperature sensors bolted wherever a rack allowed, boreholes drilled where access permitted, weather stations placed by history. This is the N-D scattered entry point (scipy.interpolate), and it returns how much of the answer was not interpolation at all.

method:

"nearest" the value of the closest sample. Defined everywhere, and never overshoots, but it is a staircase: on a smooth field the step itself becomes a false feature. Measured on a smooth 3-D field sampled at 0.60, the nearest-neighbour reconstruction leaves a residual of 0.975 units where the sensor noise is only 0.15 — 6.5 times the noise, and none of it is noise. "linear" barycentric interpolation on a Delaunay triangulation. Never exceeds the surrounding samples, and is undefined outside their convex hull. "rbf" a thin-plate radial basis function through every sample. Smooth and defined everywhere, but it overshoots its own nodes: measured on the same field it returns peaks 1.372 times the sampled height, which is a 37 % over-statement of a hot spot that no interpolation of the data can justify.

The point of the outside return value. Sensors sit inside a room, a site, a country; the corners are always outside their hull. Ask a linear interpolator there and it returns fill_value, or, if a caller quietly falls back to nearest, it returns a different method’s answer under the first method’s name. Measured on a 12 x 8.4 x 3.0 m room sampled at 1.20 m spacing, 71.2 % of the evaluation grid lay outside the hull. A number that large has to be visible, so it is returned rather than logged.

Parameters

points : (n, d) array_like Sample coordinates. 1-D input is accepted and treated as (n, 1). values : (n,) array_like query : (m, d) or (…, d) array_like Where to evaluate. The leading shape is preserved in the result. method : {“linear”, “nearest”, “rbf”} fill_value : float Returned outside the convex hull for "linear". "nearest" and "rbf" are defined everywhere and ignore it. rescale : bool Normalise each axis before triangulating. Needed when the axes have very different units (metres against millimetres); ignored by "rbf". neighbors : int or None "rbf" only: solve against the k nearest samples instead of all of them. The global solve is O(n^3); measured on 5000 query points in 3-D, it costs 0.55 / 1.76 / 7.53 s at 1400 / 4000 / 8000 samples, while neighbors=48 costs 0.38 / 0.55 / 0.81 s. Below a few thousand samples the global solve is fine and exact — the knob earns its place above that. None keeps the exact global solution.

Returns

dict value (query shape), outside (bool mask, query shape, of query points beyond the convex hull of the samples), outside_fraction, method, n_points.

Fail-closed: fewer samples than d + 1 cannot define a simplex, and raises ValueError rather than returning a field made of fill_value.

See also

interp_linear : the sorted 1-D case, which is cheaper and needs no hull.

ファミリ共通の入力契約(fail-closed)

mathops の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

同カテゴリ(interp_poly)

interp_linear · interp_cubic · poly_fit · poly_eval · poly_roots


Provenance: mathops.py — MATH operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.