griddata#
- scipy.interpolate.griddata(points, values, xi, method='linear', fill_value=nan, rescale=False)[Quelle]#
Hilfsfunktion zur Interpolation unstrukturierter Daten in mehreren Dimensionen.
- Parameter:
- points2-D ndarray von floats mit der Form (n, D) oder eine Tupel der Länge D von 1-D ndarrays mit der Form (n,).
Koordinaten der Datenpunkte.
- valuesndarray von float oder complex, Form (n,)
Datenwerte.
- xi2-D ndarray von floats mit der Form (m, D) oder ein Tupel der Länge D von ndarrays, die auf dieselbe Form broadcastbar sind.
Punkte, an denen Daten interpoliert werden sollen.
- method{‚linear‘, ‚nearest‘, ‚cubic‘}, optional
Methode der Interpolation. Eine der folgenden:
nearestgibt den Wert am Datenpunkt zurück, der dem Interpolationspunkt am nächsten liegt. Siehe
NearestNDInterpolatorfür weitere Details.lineartesselliert die Eingabepunktmenge in N-D-Simplizes und interpoliert linear auf jedem Simplex. Siehe
LinearNDInterpolatorfür weitere Details.cubic(1-D)gibt den Wert zurück, der aus einer kubischen Spline bestimmt wird.
cubic(2-D)gibt den Wert zurück, der aus einer stückweise kubischen, stetig differenzierbaren (C1) und krümmungsminimierenden Polynomfläche bestimmt wird. Siehe
CloughTocher2DInterpolatorfür weitere Details.
- fill_valuefloat, optional
Wert, der für angeforderte Punkte außerhalb der konvexen Hülle der Eingabepunkte verwendet wird. Wenn nicht angegeben, ist der Standardwert
nan. Diese Option hat keine Auswirkungen auf die Methode ‚nearest‘.- rescalebool, optional
Skaliert die Punkte auf einen Einheitswürfel, bevor die Interpolation durchgeführt wird. Dies ist nützlich, wenn einige der Eingabedimensionen inkommensurable Einheiten haben und sich um viele Größenordnungen unterscheiden.
Hinzugefügt in Version 0.14.0.
- Rückgabe:
- ndarray
Array der interpolierten Werte.
Siehe auch
LinearNDInterpolatorStückweiser linearer Interpolator in N Dimensionen.
NearestNDInterpolatorNearest-Neighbor-Interpolator in N Dimensionen.
CloughTocher2DInterpolatorStückweise kubischer, C1-glatter, Krümmungsminimierender Interpolator in 2D.
interpnInterpolation auf einem regulären Gitter oder einem rechtwinkligen Gitter.
RegularGridInterpolatorInterpolator auf einem regulären oder rechtwinkligen Gitter in beliebigen Dimensionen (
interpnumschließt diese Klasse).
Hinweise
Hinzugefügt in Version 0.9.
Hinweis
Für Daten auf einem regulären Gitter verwenden Sie stattdessen
interpn.Beispiele
Angenommen, wir möchten die 2-D-Funktion interpolieren
>>> import numpy as np >>> def func(x, y): ... return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2
auf einem Gitter in [0, 1]x[0, 1]
>>> grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j]
aber wir kennen ihre Werte nur an 1000 Datenpunkten
>>> rng = np.random.default_rng() >>> points = rng.random((1000, 2)) >>> values = func(points[:,0], points[:,1])
Dies kann mit
griddataerfolgen – unten probieren wir alle Interpolationsmethoden aus>>> from scipy.interpolate import griddata >>> grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest') >>> grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear') >>> grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic')
Man kann sehen, dass das exakte Ergebnis bis zu einem gewissen Grad von allen Methoden reproduziert wird, aber für diese glatte Funktion liefert das stückweise kubische Interpolationsverfahren die besten Ergebnisse
>>> import matplotlib.pyplot as plt >>> plt.subplot(221) >>> plt.imshow(func(grid_x, grid_y).T, extent=(0,1,0,1), origin='lower') >>> plt.plot(points[:,0], points[:,1], 'k.', ms=1) >>> plt.title('Original') >>> plt.subplot(222) >>> plt.imshow(grid_z0.T, extent=(0,1,0,1), origin='lower') >>> plt.title('Nearest') >>> plt.subplot(223) >>> plt.imshow(grid_z1.T, extent=(0,1,0,1), origin='lower') >>> plt.title('Linear') >>> plt.subplot(224) >>> plt.imshow(grid_z2.T, extent=(0,1,0,1), origin='lower') >>> plt.title('Cubic') >>> plt.gcf().set_size_inches(6, 6) >>> plt.show()