Python NumPy Shift-Array
-
NumPy Shift Array mit der Methode
np.roll()
- NumPy Shift Array mit der Slicing-Methode in Python
-
NumPy Shift Array mit der Funktion
shift()
in der Bibliothekscipy.ndimage.interpolation
in Python
In diesem Tutorial werden Methoden zum Verschieben eines NumPy-Arrays vorgestellt.
NumPy Shift Array mit der Methode np.roll()
Wenn wir die Elemente eines NumPy-Arrays nach rechts oder links verschieben möchten, können wir die Methode numpy.roll()
in Python verwenden. Die Methode numpy.roll()
wird verwendet, um Array-Elemente entlang einer bestimmten Achse zu rollen. Es nimmt das Array und die Anzahl der Stellen, an denen die Elemente des Arrays verschoben werden sollen, und gibt das verschobene Array zurück. Wenn wir die Elemente nach rechts verschieben wollen, müssen wir als Verschiebungswert eine positive ganze Zahl verwenden. Wenn wir die Elemente nach links verschieben wollen, müssen wir einen negativen Verschiebungswert angeben. Das folgende Codebeispiel zeigt, wie man Elemente eines Arrays mit der Methode numpy.roll()
verschiebt.
import numpy as np
array = np.array([1, 2, 3, 4, 5])
array_new = np.roll(array, 3)
print(array_new)
Ausgabe:
[3 4 5 1 2]
Das Array haben wir zuerst mit der Funktion np.array()
erstellt. Anschließend haben wir die Elemente mit der Funktion np.roll()
nach rechts verschoben und das resultierende Array in array_new
gespeichert.
NumPy Shift Array mit der Slicing-Methode in Python
Wenn wir die Elemente nach rechts oder links verschieben und die verschobenen Indizes durch einen konstanten Wert ersetzen möchten, müssen wir die Array-Slicing-Methode in Python verwenden. Wir können ein neues leeres Array erstellen, genau wie unser ursprüngliches Array. Wenn der Verschiebungswert positiv ist, füllen wir die linke Seite des Arrays mit dem konstanten Wert, und wenn der Verschiebungswert negativ ist, füllen wir die rechte Seite des Arrays mit dem konstanten Wert. Wir können dann die restlichen Indizes unseres neuen Arrays mit Werten aus dem ursprünglichen Array füllen. Das folgende Codebeispiel zeigt, wie Elemente eines Arrays mit der Array-Slicing-Methode verschoben werden.
import numpy as np
array = np.array([1, 2, 3, 4, 5])
num = -3
fill_value = 0
def shift(arr, num, fill_value):
result = np.empty_like(arr)
if num > 0:
result[:num] = fill_value
result[num:] = arr[:-num]
elif num < 0:
result[num:] = fill_value
result[:num] = arr[-num:]
else:
result[:] = arr
print(result)
shift(array, num, fill_value)
Ausgabe:
[4 5 0 0 0]
Wir haben die Funktion shift()
definiert, die die Elemente unseres Arrays mit der Array-Slicing-Methode im obigen Code um drei Stellen nach links verschiebt. Wir haben zuerst unser ursprüngliches Array mit der Methode np.array()
erstellt. Wir haben dann die Anzahl der Indizes num
angegeben, mit denen wir unsere Array-Elemente verschieben möchten und den konstanten Wert fill_value
, mit dem wir alle verschobenen Indizes ersetzen möchten. Am Ende übergeben wir diese Werte an die Funktion shift()
, die mit der Funktion np.empty_like(arr)
ein neues Array result
wie unser ursprüngliches Array erzeugt, die verschobenen Elemente speichert und das verschobene Array ausgibt.
NumPy Shift Array mit der Funktion shift()
in der Bibliothek scipy.ndimage.interpolation
in Python
Die Methode shift()
in der Bibliothek scipy.ndimage.interpolation
wird verwendet, um das Array mit der Spline-Interpolationsmethode in Python zu verschieben. Im Gegensatz zur Methode numpy.roll()
kann die Methode shift()
das Array verschieben und gleichzeitig die verschobenen Indizes durch einen angegebenen konstanten Wert ersetzen. Die Funktion shift()
nimmt das ursprüngliche Array, die Anzahl der Indizes, die wir verschieben möchten, und den konstanten Wert, den wir durch die verschobenen Indizes ersetzen möchten, als Eingabeparameter und gibt das verschobene Array zurück, in dem jeder verschobene Index durch den angegebenen ersetzt wird konstanter Wert. Das folgende Codebeispiel zeigt uns, wie man die Elemente eines Arrays mit der Funktion shift()
verschiebt.
import numpy as np
from scipy.ndimage.interpolation import shift
array = np.array([1, 2, 3, 4, 5])
result = shift(array, 3, cval=0)
print(result)
Ausgabe:
[0 0 0 1 2]
Wir haben die Elemente von array
um drei Stellen nach rechts verschoben und die verschobenen Indizes mit 0
mit der Funktion shift()
im obigen Code ersetzt. Wir haben unser Array zuerst mit der Funktion np.array()
erstellt. Wir haben dann mit der Shift-Funktion das array
um 3
Stellen nach rechts verschoben und die ersten drei Indizes des ursprünglichen Arrays durch den konstanten Wert 0
ersetzt. Wir haben die Ausgabe der Funktion shift()
im Array result
gespeichert. Am Ende haben wir die Werte innerhalb des Arrays result
ausgegeben.
Alle diese Methoden funktionieren einwandfrei. Wenn wir nur die Werte innerhalb des Arrays verschieben und die verschobenen Indizes nicht durch einen konstanten Wert ersetzen möchten, sollten wir die Funktion numpy.roll()
verwenden. Wenn wir andererseits die verschobenen Indizes durch einen bestimmten konstanten Wert ersetzen möchten, ist die Array-Slicing-Methode die schnellste Methode für diese Operation. Die Array-Slicing-Methode ist schneller, aber etwas komplizierter als die Verwendung der Funktion shift()
in der Bibliothek scipy
. Wenn uns die Performance unseres Codes egal ist, können wir für diese Aufgabe die Funktion shift()
verwenden.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn