Leitfaden zu Arrays in Python

Leitfaden zu Arrays in Python

Einleitung

Stellen Sie sich vor, Sie haben eine Playlist mit Ihren Lieblingsliedern auf Ihrem Telefon. Bei dieser Playlist handelt es sich um eine Liste, in der jedes Lied in einer bestimmten Reihenfolge angeordnet ist. Sie können das erste Lied abspielen, zum zweiten springen, zum fünften springen und so weiter. Diese Playlist ähnelt stark einem Array in der Computerprogrammierung.

Arrays gehören zu den grundlegendsten und am weitesten verbreiteten Datenstrukturen.

Im Wesentlichen ist ein Array eine strukturierte Möglichkeit, mehrere Elemente (wie Zahlen, Zeichen oder sogar andere Arrays) in einer bestimmten Reihenfolge zu speichern, und Sie können schnell auf jedes Element zugreifen, es ändern oder entfernen, wenn Sie seine Position (Index) kennen.

In diesem Leitfaden geben wir Ihnen einen umfassenden Überblick über die Array-Datenstruktur. Zunächst schauen wir uns an, was Arrays sind und was ihre Hauptmerkmale sind. Anschließend begeben wir uns in die Welt von Python und untersuchen, wie Arrays in realen Szenarien implementiert, manipuliert und angewendet werden.

Die Array-Datenstruktur verstehen

Arrays gehören zu den ältesten und grundlegendsten Datenstrukturen, die in der Informatik und Programmierung verwendet werden. Ihre Einfachheit, kombiniert mit ihrer Effizienz bei bestimmten Vorgängen, macht sie zu einem Hauptthema für jeden, der sich mit der Datenverwaltung und -manipulation beschäftigt.

Ein Array ist eine Sammlung von Elementen, typischerweise der dieselbe Art, gespeichert in zusammenhängende Speicherorte.

Dieser zusammenhängende Speicher ermöglicht es Arrays, abhängig von seinem Index zeitkonstanten Zugriff auf jedes Element zu ermöglichen. Jedes Element in einem Array wird als an bezeichnet Element, und die Position eines Elements im Array wird durch seine definiert Index, die normalerweise beginnt bei Null.

Betrachten Sie beispielsweise ein Array von ganzen Zahlen: [10, 20, 30, 40, 50]. Hier das Element 20 hat einen Index von 1:

Python-Array-Indizierung

Es gibt mehrere Vorteilen der Verwendung von Arrays zum Speichern unserer Daten. Aufgrund ihres Speicherlayouts ermöglichen Arrays beispielsweise Folgendes O (1) (konstante) zeitliche Komplexität beim Zugriff auf ein Element über seinen Index. Dies ist besonders nützlich, wenn wir wahlfreien Zugriff auf Elemente benötigen. Darüber hinaus werden Arrays in gespeichert zusammenhängende Speicherorte, was zu einer besseren Cache-Lokalität und allgemeinen Leistungsverbesserungen bei bestimmten Vorgängen führen kann. Ein weiterer bemerkenswerter Vorteil der Verwendung von Arrays besteht darin, dass es einfacher ist, den Speicher zu verwalten und unerwartete Überläufe oder Fehler wegen unzureichendem Speicher zu vermeiden, da Arrays nach der Deklaration eine feste Größe haben.

Note: Arrays sind besonders nützlich in Szenarien, in denen die Die Größe der Sammlung ist im Voraus bekannt und bleibt konstantoder wenn wahlfreie Zugriffe häufiger vorkommen als Einfügungen und Löschungen.

Auf der anderen Seite verfügen Arrays über einen eigenen Satz von Einschränkungen. Eine der Hauptbeschränkungen herkömmlicher Arrays ist ihre feste Größe. Sobald ein Array erstellt wurde, kann seine Größe nicht mehr geändert werden. Dies kann zu Problemen wie Speicherverschwendung (wenn das Array zu groß ist) oder der Notwendigkeit einer Größenänderung (wenn das Array zu klein ist) führen. Darüber hinaus erfordert das Einfügen oder Löschen eines Elements in der Mitte eines Arrays das Verschieben von Elementen, was dazu führt O (n) Zeitkomplexität für diese Operationen.

Um dies alles zusammenzufassen, veranschaulichen wir die Hauptmerkmale von Arrays anhand des Song-Playlist-Beispiels vom Anfang dieses Handbuchs. Ein Array ist eine Datenstruktur, die:

  • Ist indiziert: So wie jedes Lied in Ihrer Playlist eine Nummer hat (1, 2, 3, …), hat jedes Element in einem Array einen Index. In den meisten Programmiersprachen beginnt der Index jedoch bei 0. Das erste Element befindet sich also bei Index 0, das zweite bei Index 1 und so weiter.

  • Hat eine feste Größe: Wenn Sie eine Playlist mit beispielsweise 10 Songs erstellen, können Sie keinen 11. Song hinzufügen, ohne vorher einen zu entfernen. Ebenso haben Arrays eine feste Größe. Sobald Sie ein Array mit einer bestimmten Größe erstellt haben, können Sie nicht mehr Elemente hinzufügen, als die Kapazität überschreitet.

  • Ist homogen: Alle Songs in Ihrer Playlist sind Musiktitel. Ebenso sind alle Elemente in einem Array vom gleichen Typ. Wenn Sie über ein Array mit Ganzzahlen verfügen, können Sie nicht plötzlich eine Textzeichenfolge darin speichern.

  • Hat direkten Zugriff: Wenn Sie den 7. Song Ihrer Playlist anhören möchten, können Sie direkt dorthin springen. Ebenso können Sie bei Arrays sofort auf jedes Element zugreifen, wenn Sie seinen Index kennen.

  • Angrenzender Speicher: Das ist etwas technischer. Wenn ein Array im Speicher eines Computers erstellt wird, belegt es einen kontinuierlichen Speicherblock. Stellen Sie es sich wie eine Reihe nebeneinander liegender Schließfächer in der Schule vor. Jedes Schließfach steht nebeneinander, ohne Lücken dazwischen.

Python und Arrays

Python ist für seine Flexibilität und Benutzerfreundlichkeit bekannt und bietet mehrere Möglichkeiten, mit Arrays zu arbeiten. Obwohl Python im Gegensatz zu einigen anderen Sprachen nicht über eine native Array-Datenstruktur verfügt, bietet es leistungsstarke Alternativen, die ähnlich funktionieren und sogar erweiterte Funktionen bieten.

Auf den ersten Blick, Pythons Liste scheint ein Synonym für ein Array zu sein, es gibt jedoch subtile Unterschiede und Nuancen, die berücksichtigt werden müssen:

Liste Feld
Eine integrierte Python-Datenstruktur Nicht nativ in Python – sie stammen aus dem Modul „array“.
Dynamische Größe Feste (vordefinierte) Größe
Kann Elemente verschiedener Datentypen enthalten Halten Sie Gegenstände des gleichen Typs
Stellen Sie eine Reihe integrierter Methoden zur Manipulation bereit Externe Module müssen importiert werden
O(1) Zeitkomplexität für Zugriffsoperationen O(1) Zeitkomplexität für Zugriffsoperationen
Verbrauchen Sie mehr Speicher Speichereffizienter

Wenn man sich diese Tabelle ansieht, stellt sich natürlich die Frage: „Wann soll welches verwendet werden?“. Wenn Sie eine Sammlung benötigen, die dynamisch wachsen oder schrumpfen kann und gemischte Datentypen aufnehmen kann, ist die Liste von Python die richtige Wahl. Für Szenarien, die eine speichereffizientere Sammlung mit Elementen desselben Typs erfordern, könnten Sie jedoch die Verwendung von Python in Betracht ziehen array Modul oder externe Bibliotheken wie NumPy.

Das Array Modul in Python

Wenn die meisten Entwickler in Python an Arrays denken, denken sie oft standardmäßig an Listen. Allerdings bietet Python durch seine integrierte Struktur eine speziellere Array-Struktur array Modul. Dieses Modul bietet eine platzsparende Speicherung grundlegender Datentypen im C-Stil in Python.

Während Python-Listen unglaublich vielseitig sind und jede Art von Objekt speichern können, können sie manchmal übertrieben sein, insbesondere wenn Sie nur eine Sammlung grundlegender Datentypen wie Ganzzahlen oder Gleitkommazahlen speichern müssen. Der array Das Modul bietet eine Möglichkeit, Arrays zu erstellen, die speichereffizienter sind als Listen für bestimmte Datentypen.

Erstellen eines Arrays

So verwenden Sie die array Modul, müssen Sie es zuerst importieren:

from array import array

Nach dem Import können Sie mit dem ein Array erstellen array() Konstrukteur:

arr = array('i', [1, 2, 3, 4, 5])
print(arr)

Hier, die 'i' Das Argument gibt an, dass das Array signierte Daten speichert ganze Zahlen. Es sind mehrere andere Typencodes verfügbar, z 'f' für Schwimmer und 'd' für Doppel.

Auf Elemente zugreifen und diese ändern

Sie können auf Elemente in einem Array zugreifen und diese ändern, genau wie Sie es mit einer Liste tun würden:

print(arr[2]) 

Und jetzt ändern wir das Element, indem wir seinen Wert in ändern 6:

arr[2] = 6
print(arr) 

Array-Methoden

Das array Das Modul bietet mehrere Methoden zum Bearbeiten von Arrays:

  • append() – Fügt ein Element am Ende des Arrays hinzu:

    arr.append(7)
    print(arr) 
  • extend() – Hängt iterierbare Elemente an das Ende an:

    arr.extend([8, 9])
    print(arr) 
  • pop() – Entfernt das Element und gibt es an der angegebenen Position zurück:

    arr.pop(2)
    print(arr) 
  • remove(): Entfernt das erste Vorkommen des angegebenen Werts:

    arr.remove(2)
    print(arr) 
  • reverse(): Kehrt die Reihenfolge des Arrays um:

    arr.reverse()
    print(arr) 

Hinweis: Es gibt mehr Methoden als wir hier aufgelistet haben. Siehe die offizielle Python-Dokumentation um eine Liste aller verfügbaren Methoden im anzuzeigen array Modul.

Während die array Da das Modul eine speichereffizientere Möglichkeit zum Speichern grundlegender Datentypen bietet, ist es wichtig, sich dessen zu merken Einschränkungen. Im Gegensatz zu Listen sind Arrays dies homogen. Das bedeutet, dass alle Elemente im Array vom gleichen Typ sein müssen. Außerdem können Sie nur speichern grundlegende Datentypen im C-Stil in Arrays. Wenn Sie benutzerdefinierte Objekte oder andere Python-Typen speichern müssen, müssen Sie eine Liste oder eine andere Datenstruktur verwenden.

NumPy-Arrays

NumPy, kurz für Numerical Python, ist ein grundlegendes Paket für numerische Berechnungen in Python. Eines seiner Hauptmerkmale ist seine Leistungsfähigkeit N-dimensionales Array-Objekt, das schnelle Operationen an Arrays bietet, einschließlich mathematischer, logischer, Formmanipulation und mehr.

NumPy-Arrays sind vielseitiger als die integrierten Python-Arrays array Modul und sind ein fester Bestandteil in Datenwissenschafts- und maschinellen Lernprojekten.

Warum NumPy-Arrays verwenden?

Das erste was mir in den Sinn kommt ist Leistung. NumPy-Arrays sind in C implementiert und ermöglichen aufgrund optimierter Algorithmen und der Vorteile der zusammenhängenden Speicherspeicherung eine effiziente Speicherspeicherung und schnellere Vorgänge.

Während die integrierten Listen und Arrays von Python eindimensional sind, können NumPy-Arrays eindimensional sein mehrdimensional, was sie ideal für die Darstellung von Matrizen oder Tensoren macht.

Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!

Schließlich bietet NumPy eine umfangreiches Funktionsspektrum um diese Arrays zu bearbeiten, von der Grundrechenart bis hin zu fortgeschrittenen mathematischen Operationen, Umformen, Teilen und mehr.

Hinweis: Wenn Sie die Größe der Daten im Voraus kennen, kann die Vorabzuweisung von Speicher für Arrays (insbesondere in NumPy) zu Leistungsverbesserungen führen.

Erstellen eines NumPy-Arrays

Um NumPy verwenden zu können, müssen Sie es zunächst installieren (pip install numpy) und importieren Sie es dann:

import numpy as np

Nach dem Import können Sie mit dem ein NumPy-Array erstellen array() Funktion:

arr = np.array([1, 2, 3, 4, 5])
print(arr) 

Sie können auch mehrdimensionale Arrays erstellen:

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)

Dies wird uns geben:

[[1 2 3] [4 5 6] [7 8 9]]

Neben diesen grundlegenden Möglichkeiten zum Erstellen von Arrays bietet uns NumPy weitere clevere Möglichkeiten zum Erstellen von Arrays. Eine davon ist die arange() Methode. Es erstellt Arrays mit regelmäßig steigenden Werten:

arr = np.arange(10)
print(arr) 

Ein anderer ist der linspace() Methode, die Arrays mit einer angegebenen Anzahl von Elementen erstellt, die gleichmäßig zwischen den angegebenen Anfangs- und Endwerten liegen:

even_space = np.linspace(0, 1, 5)
print(even_space) 

Auf Elemente zugreifen und diese ändern

Der Zugriff auf und die Änderung von Elementen in einem NumPy-Array ist intuitiv:

print(arr[2]) arr[2] = 6
print(arr) 

Machen Sie für mehrdimensionale Arrays im Großen und Ganzen das Gleiche:

print(matrix[1, 2]) matrix[1, 2] = 10
print(matrix)

Ändert den Wert des Elements in der zweiten Zeile (index 1) und die dritte Spalte (index 2):

[[1 2 3] [4 5 20] [7 8 9]]

Ändern der Form eines Arrays

NumPy bietet viele Funktionen und Methoden zum Bearbeiten und Bearbeiten von Arrays. Sie können zum Beispiel die verwenden reshape() Methode zu Ändern Sie die Form eines Arrays. Angenommen, wir haben ein einfaches Array:

import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Original Array:")
print(arr) 

Und wir wollen es in eine 3×4-Matrix umformen. Alles was Sie tun müssen, ist die zu verwenden reshape() Methode mit den gewünschten Dimensionen als Argumente übergeben:


reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)

Dies führt zu:

Reshaped Array (3x4):
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

Matrix-Multiplikation

Das numpy.dot() Methode wird verwendet für Matrix-Multiplikation. Es gibt das Skalarprodukt zweier Arrays zurück. Für eindimensionale Arrays ist es das Innenprodukt der Arrays. Für zweidimensionale Arrays ist es äquivalent zu Matrix-Multiplikation, und für ND ist es ein Summenprodukt über der letzten Achse des ersten Arrays und der vorletzten des zweiten Arrays.

Mal sehen, wie es funktioniert. Berechnen wir zunächst das Skalarprodukt zweier eindimensionaler Arrays (das innere Produkt der Vektoren):

import numpy as np vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])
dot_product_1d = np.dot(vec1, vec2) print("Dot product of two 1-D arrays:")
print(dot_product_1d) 

Dies führt zu:

Dot product of two 1-D arrays:
32

32 ist in der Tat das innere Produkt der beiden Arrays – (14 + 25 + 3*6). Als nächstes können wir eine Matrixmultiplikation zweier 2D-Arrays durchführen:


mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[2, 0], [1, 3]])
matrix_product = np.dot(mat1, mat2) print("Matrix multiplication of two 2-D arrays:")
print(matrix_product) 

Was uns geben wird:

Matrix multiplication of two 2-D arrays:
[[ 4 6] [10 12]]

NumPy-Arrays sind ein bedeutender Fortschritt gegenüber den integrierten Listen von Python array Modul, insbesondere für naturwissenschaftliche und mathematische Berechnungen. Ihre Effizienz, kombiniert mit der umfangreichen Funktionalität der NumPy-Bibliothek, macht sie zu einem unverzichtbaren Werkzeug für jeden, der numerische Operationen in Python durchführen möchte.

Zusammenfassung

Arrays, ein Eckpfeiler der Informatik und Programmierung, haben sich in verschiedenen Anwendungen und Bereichen immer wieder bewährt. In Python ist diese grundlegende Datenstruktur durch ihre verschiedenen Inkarnationen wie Listen, die array Das Modul und die leistungsstarken NumPy-Arrays bieten Entwicklern eine Mischung aus Effizienz, Vielseitigkeit und Einfachheit.

In diesem Leitfaden sind wir von den grundlegenden Konzepten von Arrays zu ihren praktischen Anwendungen in Python gelangt. Wir haben gesehen, wie Arrays mit ihrer speicherzusammenhängenden Natur schnelle Zugriffszeiten ermöglichen und wie die dynamischen Listen von Python eine zusätzliche Ebene der Flexibilität bieten. Wir sind auch in die spezielle Welt von NumPy eingetaucht, wo sich Arrays in leistungsstarke Werkzeuge für numerische Berechnungen verwandeln.

Zeitstempel:

Mehr von Stapelmissbrauch