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.
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 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.
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.
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.
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.
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.
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:
.
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
.
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]
.
In diesem Beispiel werde ich das erste Beispiel in diesem Tutorial neu schreiben, jedoch mit []
anstatt ()
, wie folgt:
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 einemndarray
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 einF
.Also lassen Sie uns eine leere erstellen
[2,2]
Array von Typint
. 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 innumpy.leer
. Also, wenn wir eine erstellen wollen[2,2]
Nullfeld des Typsint
, 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 mitnumpy.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")
, woherein
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 seinAuftrag
ist ein optionales Argument, das auf die Indexreihenfolge verweist, die wir zum Lesen des Arrays verwenden möchtenein
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 undEIN
bedeutet das Lesen / Schreiben der Elemente in Fortran-ähnlicher Reihenfolge, wennein
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 wir16
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
unda2
sind Arrays, die die gleiche Form haben, undAchse
ist die Achse, auf der die Arrays verbunden werden, vorausgesetzt, der Standardwert ist0
.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üglichIndizes_oder_Sektionen
, wenn es eine ganze Zahl istN
, Das Array wird in unterteiltN
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.