scipy.ndimage.

map_coordinates#

scipy.ndimage.map_coordinates(input, coordinates, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[Quelle]#

Ordnet das Eingabearray neuen Koordinaten durch Interpolation zu.

Das Koordinatenarray wird verwendet, um für jeden Punkt in der Ausgabe die entsprechenden Koordinaten im Eingabearray zu finden. Der Wert der Eingabe an diesen Koordinaten wird durch Spline-Interpolation der angeforderten Ordnung bestimmt.

Die Form der Ausgabe wird aus der des Koordinatenarrays abgeleitet, indem die erste Achse weggelassen wird. Die Werte des Arrays entlang der ersten Achse sind die Koordinaten im Eingabearray, an denen der Ausgabewert gefunden wird.

Parameter:
inputarray_like

Das Eingabearray.

coordinatesarray_like

Die Koordinaten, an denen input ausgewertet wird.

outputarray oder dtype, optional

Das Array, in das die Ausgabe platziert werden soll, oder der Datentyp des zurückgegebenen Arrays. Standardmäßig wird ein Array mit demselben Datentyp wie input erstellt.

orderint, optional

Die Ordnung der Spline-Interpolation, Standard ist 3. Die Ordnung muss im Bereich 0-5 liegen.

mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, optional

Der Parameter mode bestimmt, wie das Eingabearray über seine Grenzen hinaus erweitert wird. Standard ist ‘constant’. Das Verhalten für jeden gültigen Wert ist wie folgt (weitere Plots und Details zu Randmodi)

‘reflect’ (d c b a | a b c d | d c b a)

Die Eingabe wird erweitert, indem über den Rand des letzten Pixels gespiegelt wird. Dieser Modus wird auch manchmal als halb-Sample-symmetrisch bezeichnet.

‘grid-mirror’

Dies ist ein Synonym für ‘reflect’.

‘constant’ (k k k k | a b c d | k k k k)

Die Eingabe wird erweitert, indem alle Werte außerhalb des Rands mit demselben konstanten Wert gefüllt werden, der durch den Parameter cval definiert ist. Außerhalb der Grenzen der Eingabe wird keine Interpolation durchgeführt.

‘grid-constant’ (k k k k | a b c d | k k k k)

Die Eingabe wird erweitert, indem alle Werte außerhalb des Rands mit demselben konstanten Wert gefüllt werden, der durch den Parameter cval definiert ist. Die Interpolation erfolgt auch für Abtastpunkte außerhalb des Umfangs der Eingabe.

‘nearest’ (a a a a | a b c d | d d d d)

Die Eingabe wird erweitert, indem das letzte Pixel wiederholt wird.

‘mirror’ (d c b | a b c d | c b a)

Die Eingabe wird erweitert, indem über die Mitte des letzten Pixels gespiegelt wird. Dieser Modus wird auch manchmal als ganz-Sample-symmetrisch bezeichnet.

‘grid-wrap’ (a b c d | a b c d | a b c d)

Die Eingabe wird erweitert, indem zum gegenüberliegenden Rand umgebrochen wird.

‘wrap’ (d b c d | a b c d | b c a b)

Die Eingabe wird durch Umwickeln zum gegenüberliegenden Rand erweitert, jedoch so, dass der letzte und der erste Punkt genau übereinanderliegen. In diesem Fall ist nicht eindeutig definiert, welcher Abtastpunkt am Überlappungspunkt gewählt wird.

cvalskalar, optional

Wert, mit dem die Ränder der Eingabe gefüllt werden, wenn mode ‘constant’ ist. Standard ist 0.0.

prefilterbool, optional

Bestimmt, ob das Eingabearray vor der Interpolation mit spline_filter vorfiltert wird. Der Standardwert ist True, was ein temporäres float64-Array gefilterter Werte erstellt, wenn order > 1 ist. Wenn dies auf False gesetzt wird, wird die Ausgabe leicht verschwommen sein, wenn order > 1 ist, es sei denn, die Eingabe wird vorfiltert, d. h. sie ist das Ergebnis des Aufrufs von spline_filter auf die ursprüngliche Eingabe.

Rückgabe:
map_coordinatesndarray

Das Ergebnis der Transformation der Eingabe. Die Form der Ausgabe wird aus der von coordinates abgeleitet, indem die erste Achse weggelassen wird.

Hinweise

Für komplexe input ordnet diese Funktion die Real- und Imaginärteile unabhängig voneinander zu.

Hinzugefügt in Version 1.6.0: Unterstützung für komplexe Werte hinzugefügt.

Beispiele

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.arange(12.).reshape((4, 3))
>>> a
array([[  0.,   1.,   2.],
       [  3.,   4.,   5.],
       [  6.,   7.,   8.],
       [  9.,  10.,  11.]])
>>> ndimage.map_coordinates(a, [[0.5, 2], [0.5, 1]], order=1)
array([ 2.,  7.])

Oben ergibt der interpolierte Wert von a[0.5, 0.5] output[0], während a[2, 1] output[1] ergibt.

>>> inds = np.array([[0.5, 2], [0.5, 4]])
>>> ndimage.map_coordinates(a, inds, order=1, cval=-33.3)
array([  2. , -33.3])
>>> ndimage.map_coordinates(a, inds, order=1, mode='nearest')
array([ 2.,  8.])
>>> ndimage.map_coordinates(a, inds, order=1, cval=0, output=bool)
array([ True, False], dtype=bool)