Einführung in NumPy

Numerisch ist ein Paket, das ursprünglich von Jim Hugunin entwickelt wurde. Es gilt als Vorfahr von NumPy, einer Python-Bibliothek und einem von Travis Oliphant erstellten Open-Source-Projekt, das für Numerical Python steht. Travis erstellte NumPy durch die Einbindung von Features des Numarray Paket in Numerisch. 

Die grundlegende Idee von NumPy ist die Unterstützung mehrdimensionaler Arrays. Daher kann NumPy als Basis für numerisches Berechnen in Python betrachtet werden und wurde entwickelt, um Python zur Lösung mathematischer und wissenschaftlicher Probleme verwenden zu können. Das NumPy-Modul stellt uns neben Konstanten wie der Basis natürlicher Logarithmen Hunderte nützlicher mathematischer Funktionen zur Verfügung (e) und pi (π).

Dieses Tutorial zeigt, wie wir NumPy für die Arbeit mit mehrdimensionalen Arrays verwenden können, und beschreibt das ndarray-Objekt, ein grundlegendes Objekt der Bibliothek.

NumPy installieren

Da Python nicht im Lieferumfang von NumPy enthalten ist, müssen Sie diese Bibliothek zuerst installieren und installieren. Dies können Sie einfach tun, indem Sie den folgenden Befehl in Ihrer Eingabeaufforderung ausführen:

pip install numpy

Um sicherzustellen, dass NumPy erfolgreich installiert wurde, führen Sie die folgenden Befehle in Pythons IDLE aus:

Wenn die einführen Anweisung läuft mindestens erfolgreich, dann sind Sie alle gesetzt!

Das ndarry-Objekt

Das ndarray ist ein grundlegendes Objekt von NumPy. Dieses Objekt ist ein N-dimensionales Array, dh es enthält eine Sammlung von Elementen desselben Typs, die mit indexiert wurden N (Dimensionen des Arrays) Ganzzahlen.

Die Hauptmerkmale von ndarray sind Datentyp (dtype), gestalten, Größe, Artikelgröße, Daten, und ndim. Lernen Sie, was jedes Attribut durch ein Beispiel bedeutet. 

In diesem Beispiel verwenden wir NumPy, um ein Array zu erstellen. Ich werde nicht die Dimensionen des Arrays und andere Informationen angeben, da wir dies anhand der obigen Attribute sehen werden.

Beachten Sie, dass wir die verwendet haben Array Funktion zum Erstellen eines Arrays. Die Ausgabe des obigen Skripts lautet wie folgt:

Kommen wir nun zu unseren Attributen zurück.

dtype

Das dtype Das Attribut kann wie in der folgenden Anweisung gezeigt ausgeführt werden:

data_type = mein_array.dtype

Die obige Aussage wird zurückkehren int32 als Datentyp. Dies bedeutet, dass die Elemente des Arrays vom Typ sind int32. Ich erhalte 32 da ich einen 32-Bit-Python verwende. Wenn Sie einen 64-Bit-Python verwenden, erhalten Sie int64, Am Ende haben wir es jedoch mit ganzen Zahlen zu tun.

Da NumPy im wissenschaftlichen Rechnen verwendet wird, gibt es viele Datentypen, wie in der Dokumentation gezeigt. Beachten Sie, dass die Mehrzahl der NumPy-Datentypen mit einer Zahl enden, die die Anzahl der diesem Typ zugeordneten Bits angibt (dies wurde im obigen Absatz kurz erwähnt)..

Die folgenden Beispiele zeigen, wie wir von einem Typ in einen anderen konvertieren können:

bool (35) bool (0) bool (-1) float (wahr) int (67.7) float (87)

Die obigen Anweisungen geben Folgendes zurück:

Richtig Falsch Richtig 1,0 67 87,0

Obwohl wir von einem Typ in einen anderen konvertieren können, ist es wichtig zu wissen, dass wir eine komplexe Zahl nicht in eine Ganzzahl oder einen Float konvertieren können.

gestalten

Das Shape-Attribut gibt ein Tupel der Array-Dimensionen zurück. Also die folgende Aussage:

array_shape = mein_array.shape

wird zurückkehren (4,4), was bedeutet, dass unser Array besteht 4 Reihen und 4 Säulen.

Größe

Das Größe Attribut gibt die Anzahl der Elemente im Array zurück. Wenn wir also Folgendes eingeben:

array_size = my_array.size

wir werden bekommen 16 als Ergebnis bedeutet das, dass wir haben 16 Elemente in unserem Array.

Artikelgröße

Das Artikelgröße Attribut gibt die Größe eines Arrayelements in Byte zurück. Die folgende Aussage:

array_item_size = mein_array.itemsize

wird zurückkehren 4. Dies bedeutet, dass jedes Array-Element eine Größe von 4 Byte hat.

Daten

Das Daten Attribut ist ein Python-Pufferobjekt, das auf den Anfang der Daten des Arrays zeigt. Wenn wir folgendes eingeben:

array_location = meine_array.data

wir werden folgendes bekommen: .

ndim

Das Attribut ndim gibt die Anzahl der Array-Dimensionen zurück. Geben Sie also die folgende Anweisung ein:

array_dimension = mein_array.ndim

wird zurückkehren 2, das Array besteht also aus zwei Dimensionen.

Nachdem Sie verstanden haben, was das ist ndarray Attribute bedeuten, schauen wir uns einige weitere Anwendungsbeispiele an ndarray.

Beispiel 1

Angenommen, wir möchten ein neues Array mit einer Zeile und fünf Spalten erstellen. Wir würden das wie folgt machen:

my_array = np.array ((1, 2, 3, 4, 5))

Die Ausgabe der obigen Anweisung lautet: [1 2 3 4 5].

Beispiel 2

In diesem Beispiel werde ich das erste Beispiel in diesem Tutorial neu schreiben, jedoch mit [] anstatt (), wie folgt:

Beispiel 3

Dieses Beispiel zeigt, wie wir einen strukturierten Datentyp verwenden, in dem wir den Feldnamen und den entsprechenden Datentyp angeben:

numpy importieren als np height_type = np.dtype ([('height', np.float)])

Wenn wir print (Datentyp), wir werden folgendes bekommen:

[('Höhe', '

Wir können das beantragen height_type zu einem ndarray Objekt wie folgt:

numpy importieren als np height_type = np.dtype ([('height', np.float)]) mein_array = np.array ([(1.78,), (1.69,), (1.88,)], dtype = height_type # Zugriff auf den Inhalt der Höhe der Spalte (my_array ['height'])

Elemente auswählen

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie bestimmte Elemente im Array auswählen. Angenommen, wir möchten für unser oben im Abschnitt "ndarry-Objekt" angezeigtes Feld das Element in der dritten Zeile und in der vierten Spalte auswählen. Wir machen das wie folgt:

my_array [2,3]

Denken Sie daran, dass die Indizierung hier beginnt 0, und deshalb haben wir geschrieben [2,3] anstatt [3,4].

Mehr zu NumPy-Arrays

In diesem Abschnitt werden wir uns eingehender mit NumPy-Arrays beschäftigen.

Leere (nicht initialisierte) Arrays

Wir können mit ein leeres Array erstellen numpy.leer mit der folgenden Syntax:

numpy.leer (Form, Typ, Reihenfolge)

Die Bedeutungen der Parameter im obigen Konstruktor sind wie folgt

  • Gestalten: die Form (Abmessungen) des leeren Arrays.
  • dtype: der gewünschte Ausgabetyp, der optional ist.
  • Auftrag: Wenn Sie ein Array im C-Stil (Zeilenmajor) wünschen, geben Sie Folgendes ein C; Wenn Sie ein Array im FORTRAN-Stil (Spaltenhauptfeld) wünschen, geben Sie Folgendes ein F.

Also lassen Sie uns eine leere erstellen [2,2] Array von Typ int. Wir können das wie folgt machen:

numpy importieren als np empty_array = np.empty ([2,2], dtype = int) print (empty_array)

Das obige Skript gibt die folgenden zufälligen Werte zurück, da das Array nicht initialisiert wurde:

[[1852795252 111218] [7500288 53018624]]

Array gefüllt mit Nullen

Um ein Array zu erstellen, in dem alle Elemente aus Nullen bestehen, verwenden wir numpy.zeros. Der Konstruktor hat hier die gleiche Syntax und Parameter wie in numpy.leer. Also, wenn wir eine erstellen wollen [2,2] Nullfeld des Typs int, Wir können das wie folgt machen:

numpy importieren als np zeros_array = np.zeros ([2,2], dtype = int) print (zeros_array)

Das obige Skript gibt Folgendes zurück:

[[0 0] [0 0]]

Ein Array mit allen Elementen, die den Wert haben 1 kann einfach wie oben erstellt werden, jedoch mit numpy.ones.

Arrays mit gleichmäßig beabstandeten Werten innerhalb eines bestimmten Bereichs

Wir können benutzen numpy.arange ein Array mit gleichmäßig beabstandeten Werten innerhalb eines angegebenen Bereichs erstellen. Der Konstruktor hat das folgende Format:

numpy.arange (start, stop, step, dtype)

Nachfolgend ist die Bedeutung jedes Parameters angegeben:

  • Start: Hier beginnt das Intervall. Der Standardwert ist 0.
  • Halt: das Ende des Intervalls, sofern diese Anzahl nicht enthalten ist.
  • Schritt: der Abstand zwischen den Werten. Der Standardwert ist 1.
  • dtype: der Datentyp der Ausgabe. Wenn nicht angegeben, entspricht der Datentyp dem der Eingabe.

Nehmen wir ein Beispiel für numpy.arange.

importiere numpy als np mein_array = np.arange (1,10) print (mein_array)

Das Ergebnis des obigen Skripts lautet:

[1 2 3 4 5 6 7 8 9]

Umformen eines Arrays

Um ein Array umzugestalten, verwenden wir das numpy.reshape Funktion. Diese Funktion gibt einem Array eine neue Form, ohne seine Daten zu ändern. Wie in der Dokumentation gezeigt, hat die Funktion die folgenden Attribute: numpy.reshape (a, newshape, order = "C"), woher ein ist das Array, das wir gerne umgestalten möchten, neue Form ist die neue gewünschte Form, vorausgesetzt, die neue Form sollte mit der Ursprungsform kompatibel sein Auftrag ist ein optionales Argument, das auf die Indexreihenfolge verweist, die wir zum Lesen des Arrays verwenden möchten ein und wie wir die Elemente in dem umgeformten Array platzieren möchten.

C bedeutet das Lesen / Schreiben der Elemente in einer C-ähnlichen Indexreihenfolge; F bedeutet das Lesen / Schreiben der Elemente in Fortran-ähnlicher Indexreihenfolge und EIN bedeutet das Lesen / Schreiben der Elemente in Fortran-ähnlicher Reihenfolge, wenn ein Fortran ist im Gedächtnis zusammenhängend, sonst C-artig.

Ich weiß, dass ich im obigen Absatz viel behandelt habe, aber das Konzept ist sehr einfach. Nehmen wir unser ursprüngliches Array mein_array und versuchen, es neu zu gestalten. Denken Sie daran, dass das neue Array (umgeformtes Array) mit dem ursprünglichen Array kompatibel sein muss. Zum Beispiel, mein_array hat die Form (4,4), das haben wir 16 Elemente im Array, und das neue Array muss diese Anzahl von Elementen haben.

Wir können umformen mein_array indem Sie acht Zeilen und zwei Spalten festlegen, wie folgt:

import numpy als np my_array = np.array ((((6, 12, 93, 2), (5, 26, 78, 90), (3, 12, 16, 22), (5, 3, 1, 16) )) my_array_reshaped = np.reshape (my_array, (8,2))

In diesem Fall hätten wir die folgende Ausgabe, bei der wir auch 16 Elemente haben.

[[6 12] [93 2] [5 26] [78 90] [3 12] [16 22] [5 3] [1 16]]

Was ist, wenn wir die Umformungsaussage wie folgt schreiben?

my_array_reshaped = np.reshape (mein_array, (8,3))

In diesem Fall erhalten Sie folgende Fehlermeldung:

ValueError: Array der Größe 16 kann nicht in Form gebracht werden (8,3).

Verketten von Arrays

Wenn wir zwei oder mehr Arrays mit derselben Form entlang einer bestimmten Achse verbinden möchten, können wir das verwenden numpy.concatenate Funktion. Die Syntax dieser Funktion lautet: numnumpy.concatenate ((a1, a2,…), Achse = 0) y.concatenate. a1 und a2 sind Arrays, die die gleiche Form haben, und Achse ist die Achse, auf der die Arrays verbunden werden, vorausgesetzt, der Standardwert ist 0.

Nehmen wir noch einmal ein Beispiel, um das Konzept zu vereinfachen. In diesem Beispiel werden wir drei Arrays verbinden (verketten).

numpy importieren als np array_1 = np.array (((1, 2), (3, 4))) array_2 = np.array (((5, 6), (7, 8)) array_3 = np.array ( ((9, 10), (11, 12))) contact_array = np.concatenate ((array_1, array_2, array_3)) print ('First Array:') print (Array_1) print ('Second Array:') print ( array_2) print ('Third Array:') print (array_3) print ('Concatenated Array:') print (contact_array)

Die Ausgabe des obigen Codes lautet wie folgt:

Erstes Array: [[1 2] [3 4]] Zweites Array: [[5 6] [7 8]] Drittes Array: [[9 10] [11 12]] Verkettetes Array: [[1 2] [3 4 ] [5 6] [7 8] [9 10] [11 12]]

Aufteilen von Arrays

Im Gegensatz zum Verbinden von Arrays, wie im obigen Abschnitt gezeigt, wollen wir sehen, wie wir ein Array in mehrere Sub-Arrays aufteilen können. Dies kann mit folgender Funktion erfolgen:

numpy.split (ary, index_or_sections, Achse = 0)

ary ist das Array, das in Sub-Arrays unterteilt werden soll. Bezüglich Indizes_oder_Sektionen, wenn es eine ganze Zahl ist N, Das Array wird in unterteilt N gleiche Arrays entlang der Achse. Wenn es sich um ein 1-D-Array von sortierten Ganzzahlen handelt, geben die Einträge an, wo entlang der Achse Das Array ist aufgeteilt. Achse ist die Achse, entlang der geteilt werden soll.

Das folgende Beispiel wird das, was wir im vorherigen Beispiel gemacht haben, umkehren, dh das verkettete Array in seine drei Array-Bestandteile zurückgeben:

numpy importieren als np concatenated_array = np.array ((((1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12))) split_array = np.split (concatenated_array, 3) print ('Original Array:') print (concatenated_array) print ('Split Sub-Arrays:') print ('Erstes Sub-Array') print (split_array [0]) print ('Second Subarray ') print (split_array [1]) print (' drittes Subarray ') print (split_array [2])

Die Ausgabe des obigen Skripts lautet:

Originalarray: [[1 2] [3 4] [5 6] [7 8] [9 10] [11 12]] Aufgeteilte Subarrays: erstes Subarray [[1 2] [3 4]] zweites Sub -array [[5 6] [7 8]] dritte Unteranordnung [[9 10] [11 12]]

Fazit

Wie wir in diesem Tutorial gesehen haben, macht NumPy die Arbeit mit Arrays sehr flexibel. Das Tutorial war nur ein Kratzer auf der Oberfläche dieser interessanten Python-Bibliothek. NumPy bietet noch viele weitere Funktionen, um diese Bibliothek optimal nutzen zu können. Ein umfassendes Buch zu diesem Thema, das vom NumPy-Ersteller selbst erstellt wurde, ist Guide to NumPy.

Sehen Sie sich außerdem an, was wir auf dem Markt zum Verkauf und zum Lernen zur Verfügung haben, und zögern Sie nicht, Fragen zu stellen und mit dem untenstehenden Feed wertvolles Feedback zu geben.