rotate#
- scipy.ndimage.rotate(input, angle, axes=(1, 0), reshape=True, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[Quelle]#
Ein Array drehen.
Das Array wird in der durch die zwei Achsen definierten Ebene, die durch den axes-Parameter gegeben sind, mit Spline-Interpolation der angeforderten Ordnung gedreht.
- Parameter:
- inputarray_like
Das Eingabearray.
- anglefloat
Der Rotationswinkel in Grad.
- axestuple aus 2 ints, optional
Die beiden Achsen, die die Rotationsebene definieren. Standard ist die erste Achse.
- reshapebool, optional
Wenn reshape wahr ist, wird die Ausgabegröße so angepasst, dass das Eingabearray vollständig in die Ausgabe passt. Standard ist True.
- 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_filtervortrainiert wird. Der Standardwert ist True, was ein temporäres float64-Array mit gefilterten Werten erstellt, wennorder > 1. Wenn dies auf False gesetzt wird, ist die Ausgabe leicht unscharf, wennorder > 1, es sei denn, die Eingabe wurde vortrainiert, d.h. sie ist das Ergebnis des Aufrufs vonspline_filterauf die ursprüngliche Eingabe.
- Rückgabe:
- rotatendarray
Die gedrehte Eingabe.
Hinweise
Für komplexe Eingaben dreht diese Funktion die Real- und Imaginärteile unabhängig voneinander.
Hinzugefügt in Version 1.6.0: Unterstützung für komplexe Werte hinzugefügt.
Beispiele
>>> from scipy import ndimage, datasets >>> import matplotlib.pyplot as plt >>> fig = plt.figure(figsize=(10, 3)) >>> ax1, ax2, ax3 = fig.subplots(1, 3) >>> img = datasets.ascent() >>> img_45 = ndimage.rotate(img, 45, reshape=False) >>> full_img_45 = ndimage.rotate(img, 45, reshape=True) >>> ax1.imshow(img, cmap='gray') >>> ax1.set_axis_off() >>> ax2.imshow(img_45, cmap='gray') >>> ax2.set_axis_off() >>> ax3.imshow(full_img_45, cmap='gray') >>> ax3.set_axis_off() >>> fig.set_layout_engine('tight') >>> plt.show()
>>> print(img.shape) (512, 512) >>> print(img_45.shape) (512, 512) >>> print(full_img_45.shape) (724, 724)