Python NumPy Shift-Array

Muhammad Maisam Abbas 30 Januar 2023
  1. NumPy Shift Array mit der Methode np.roll()
  2. NumPy Shift Array mit der Slicing-Methode in Python
  3. NumPy Shift Array mit der Funktion shift() in der Bibliothek scipy.ndimage.interpolation in Python
Python NumPy Shift-Array

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.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

Verwandter Artikel - NumPy Array