Eine vollständige Anleitung zu NumPy-Funktionen in Python für Anfänger

Unter Low-Level-Sprachentwicklern, wie denen, die in C++ geschult sind, gibt es ein weit verbreitetes Sprichwort. Sie geben zu, dass Python die Entwicklungszeit verkürzt, behaupten aber, dass dadurch die Laufzeit geopfert wird.

Während dies sicherlich auf viele Anwendungen zutrifft, wissen nur wenige Entwickler, dass es welche gibt Möglichkeiten, die Betriebszeit von Python zu verkürzen ohne die Benutzerfreundlichkeit zu beeinträchtigen. Selbst fortgeschrittene Python-Entwickler nutzen nicht immer die ihnen zur Verfügung stehenden Tools zur Optimierung von Berechnungen.

In der Welt der intensiven Programmierung, in der die Wiederholung von Millionen von Funktionsaufrufen gängige Praxis ist, wird jedoch eine Laufzeit von 50 Mikrosekunden in Betracht gezogen langsam. Bedenken Sie, dass diese 50 Mikrosekunden, die über eine Million Funktionsaufrufe wiederholt werden, zu einer zusätzlichen Laufzeit von 50 Sekunden führen – und das ist so definitiv langsam.

NumPy funktioniert wie ndarray.size, np.nullenund seine überaus wichtigen Indizierungsfunktionen können die Funktionalität und den Komfort bei der Arbeit mit großen Datenfeldern radikal verbessern.

Schnelle Navigation
Was ist NumPy und wozu dient es?Grundlegende NumPy-FunktionenSo erstellen Sie ArraysErstellen eines Arrays aus einer Python-ListeErstellen einer Platzhaltermatrix mit NP.ZerosAndere Platzhalter-Arrays: NP.Ones und NP.EmptyErstellen eines sequenzierten Arrays mit aRange und LinSpace

Was ist NumPy und wozu dient es?

Mädchen benutzt Laptop

Für sich genommen ist Python eine leistungsstarke Allzweck-Programmiersprache. Der NumPy-Bibliothek (zusammen mit SciPy und MatPlotLib) macht daraus eine noch robustere Umgebung für ernsthaftes wissenschaftliches Rechnen.

NumPy erstellt als Hauptobjekt ein homogenes mehrdimensionales Array – eine n-dimensionale Matrix. Sie können dieses Objekt als Tabelle mit Elementen gleichen Typs verwenden, die durch positive Ganzzahltupel indiziert sind.

Größtenteils nutzen nur Python-Programmierer im akademischen Umfeld die Rechenmöglichkeiten, die dieser Ansatz bietet, voll aus. Die Mehrheit der anderen Entwickler verlässt sich auf Python-Listen. Dies ist eine durchaus praktikable Methode für den Umgang mit relativ kleinen Matrizen, wird jedoch bei großen Matrizen sehr unhandlich.

Wenn Sie beispielsweise versuchen würden, ein Würfelarray mit 1000 Würfelzellen zu erstellen – eine 3D-Matrix mit 1 Milliarde Zellen – würden Sie bei der Verwendung von Python-Listen bei einer Mindestgröße von 12 GB stecken bleiben. Die 32-Bit-Architektur bricht bei dieser Größe zusammen, sodass Sie gezwungen sind, einen 64-Bit-Build mit Zeigern zu erstellen, um eine „Liste von Listen“ zu erstellen. Wenn das ineffizient und undurchführbar klingt, dann deshalb, weil es so ist.

Mit NumPy könnten Sie alle diese Daten in einem 64-Bit-Build anordnen, der etwa 4 GB Speicherplatz beansprucht. Der Zeitaufwand für die Bearbeitung oder Berechnung dieser Daten ist viel geringer, als wenn Sie versuchen würden, eine iterative, verschachtelte Python-Liste zu implementieren.

Grundlegende NumPy-Funktionen

Um Python NumPy nutzen zu können, müssen Sie sich mit seinen Funktionen und Routinen vertraut machen. Einer der Gründe, warum Python-Entwickler außerhalb der Wissenschaft davor zurückschrecken, dies zu tun, ist, dass es viele davon gibt. Eine vollständige Liste finden Sie unter SciPy.org.

Der Einstieg in die Grundlagen ist jedoch einfach. Da NumPy eine N-dimensionale Matrix für Elemente desselben Typs erstellt, können Sie sofort mit der Arbeit mit seinen Array-Funktionen beginnen.

NumPy bezeichnet Dimensionen als Achsen. Bedenken Sie dies, während Sie sich mit den folgenden Funktionen vertraut machen:

  • ndarray.ndim bezieht sich auf die Anzahl der Achsen im aktuellen Array.

  • ndarray.shape definiert die Abmessungen des Arrays. Wie bereits erwähnt, verwendet NumPy das Tupel von Ganzzahlen, um die Größe von Arrays auf jeder Achse anzugeben. Dies bedeutet, dass eine Matrix mit N Reihen entlang M Säulen, Form ist definiert als (n,m). Seine Länge des Form Tupel ist gleich ndarray.ndim.

  • ndarray.size zählt die Anzahl der Elemente, aus denen das Array besteht. Es entspricht dem Produkt der einzelnen Elemente in ndarray.shape.

  • ndarray.dtype beschreibt die im Array befindlichen Elemente unter Verwendung von Standard-Python-Elementtypen oder NumPys spezielle Typen, wie z numpy.in32 oder numpy.float64.

  • ndarray.itemsize bezieht sich auf die Größe jedes Elements im Array, gemessen in Bytes. So ermitteln Sie, wie viel NumPy Ihnen tatsächlich an Speicherplatz gespart hat.

Die Verwendung dieser Funktionen zur Beschreibung eines Arrays in NumPy würde etwa so aussehen:

>>> numpy als np importieren

>>> a = np.arange(15).reshape(3, 5)

>>> a

Array( [[ 0,  1, 2, 3, 4], [ 5, 6,  7, 8, 9], [10, 11, 12, 13, 14]])

>>> eine.Form

(3, 5)

>>> a.ndim

2

>>> a.dtype.name

‚int64‘

>>> a.itemsize

8

>>> eine Größe

15

>>> Typ(a)

>>> b = np.array([6, 7, 8])

>>> b

Array([6, 7, 8])

>>> Typ(b)

Das Beispiel definiert ein Array als A und identifiziert dann die Größe, Form und Art seiner Elemente und Achsen.

So erstellen Sie Arrays

Da es bei NumPy ausschließlich um das Erstellen und Indizieren von Arrays geht, ist es sinnvoll, dass es mehrere Möglichkeiten gibt, neue Arrays zu erstellen. Sie können Arrays aus regulären Python-Listen erstellen und neue Arrays mit Einsen und Nullen als Platzhalterinhalt erstellen.

Erstellen eines Arrays aus einer Python-Liste

Wenn Sie eine reguläre Python-Liste oder ein Tupel haben, das Sie mithilfe eines NumPy-Arrays aufrufen möchten, können Sie ein Array aus den Elementtypen in den aufgerufenen Sequenzen erstellen. Dies würde wie im folgenden Beispiel aussehen:

>>> numpy als np importieren

>>> a = np.array([2,3,4])

>>> a

Array([2, 3, 4])

>>> a.dtype

dtype(‚int64‘)

>>> b = np.array([1.2, 3.5, 5.1])

>>> b.dtype

dtype(‚float64‘)

In diesem Beispiel gibt es ein bestimmtes Format zum Aufrufen von np.array dass viele NumPy-Anfänger falsch liegen. Beachten Sie die Klammern und Klammern um die Liste der Zahlen, aus denen das Argument besteht:

>>> a = np.array([x,y,z])

Die meisten NumPy-Neulinge verwenden nur Klammern, wodurch mehrere numerische Argumente erstellt werden. Dies führt zu einem verpfuschten Array und möglicherweise vielen Stunden frustriertem Debuggen, gefolgt von einem abschließenden „Ah-hah!“ Moment.

Verstehen wie np.array funktioniert, ist eigentlich ganz einfach. Es wird Folgen von Folgen in ein zweidimensionales Array umwandeln. Es wird Folgen von Folgen von Folgen in ein dreidimensionales Array umwandeln und dabei auf die gleiche Weise wie das funktionieren NAbschluss.

Dies ist eine der wichtigsten Möglichkeiten, mit denen NumPy tatsächlich sein Versprechen einlöst, die Indizierung für sehr große Arrays radikal zu optimieren. Es fungiert als „Liste von Listen“, verwendet jedoch eine Matrix beliebiger Dimensionen.

Erstellen einer Platzhaltermatrix mit NP.Zeros

Es kommt häufig vor, dass Programmierer ein Array für eine unbekannte Menge von Elementen erstellen müssen. Selbst wenn Sie die Werte der Elemente selbst nicht kennen, ist es einfach, die Größe der Matrix zu bestimmen. Wenn Sie die Größe der Matrix kennen, können Sie in NumPy ein Platzhalter-Array erstellen und es mit Platzhalterinhalten füllen – in diesem Fall mit Nullen

Durch das Erstellen einer Platzhaltermatrix voller Nullen können Sie die Größe eines Arrays zu Beginn Ihrer NumPy-Sitzung festlegen. Auf diese Weise müssen Sie das Array später nicht vergrößern, was ein komplizierter und kostspieliger Vorgang ist, den Sie im Allgemeinen vermeiden möchten, sofern dies nicht unbedingt erforderlich ist.

Hier ist ein Beispiel dafür np.nullen Werke: und np.ones arbeiten:

>>> np.zeros( (3,4) )

Array( [[ 0.,  0., 0., 0.], [ 0., 0.,  0., 0.], [ 0., 0.,  0., 0.]])

Beachten Sie, dass Sie in NumPy buchstabieren müssen np.nullen genau wie geschrieben. Es gibt keinen solchen Befehl wie np.nullenda viele NumPy-Neulinge feststellen, dass ihre ersten Platzhalter-Arrays nicht wie erwartet geladen werden.

Andere Platzhalter-Arrays: NP.Ones und NP.Empty

Es gibt andere Platzhalter-Arrays, die Sie in NumPy verwenden können. Die beiden wichtigsten sind np.ones Und np.leer. Beides begründet a dtype für das erstellte Array, das standardmäßig auf eingestellt ist float64 – ein schwebender 64-Bit-Build.

Hier ist ein Beispiel für die Erstellung eines np.ones Array in Python mit NumPy:

>>> np.ones( (2,3,4), dtype=np.int16 )

# dtype kann ebenfalls angegeben werden

Array( [[[ 1, 1, 1, 1], [ 1, 1, 1, 1], [ 1, 1, 1, 1]], [[ 1, 1, 1, 1], [ 1, 1, 1, 1], [ 1, 1, 1, 1]]], dtype=int16 )

Sie können verwenden np.leer um ein nicht initialisiertes Array zufälliger Daten zu erstellen. NumPy generiert diese Daten abhängig vom Zustand Ihres Speichers:

>>> np.empty( (2,3) ) ​

# nicht initialisiert, Ausgabe kann variieren

Array([[  3.73603959e-262,   6.02658058e-154, 6.55490914e-260], [ 5.30498948e-313,   3.14673309e-307, 1.00000000e+000]])

Erstellen eines sequenzierten Arrays mit aRange und LinSpace

Wenn Sie eine schwebende 64-Bit-Version beibehalten dtypekönnen Sie verwenden np.arange um ein sequenziertes Array zu erstellen, ähnlich wie es ein Standard-Python-Programmierer verwendet Reichweite um Listen zurückzugeben. Hier sind zwei Beispiele, wie Sie ein sequenziertes Array erstellen können:

>>> np.arange( 10, 30, 5 )

# Vielfache von 5 zwischen 10 und 30

Array([10, 15, 20, 25])

>>> np.arange( 0, 2, 0.3 ) # Kompatibel mit Float-Argumenten wie 0.3

Array([ 0. ,  0.3, 0.6, 0.9,  1.2, 1.5, 1.8])

Sie sollten jedoch beachten, dass es keine Möglichkeit gibt, die Anzahl der Elemente vorherzusagen, die Sie daraus erhalten np.arange Funktion mit Gleitkommaargumenten. Dies ist eine eingebaute Einschränkung der Präzision, die die Gleitkomma-Build-Architektur bieten kann.

Aus diesem Grund bevorzugen NumPy-Programmierer normalerweise die Verwendung np.linspace mit einem Argument, das die Anzahl der gewünschten Elemente beschreibt. Ein Beispiel dafür, wie das funktioniert, sieht so aus:

>>> von numpy import pi

>>> np.linspace( 0, 2, 9 )​

# 9 Zahlen zwischen 0 und 2

Array([ 0.  , 0.25, 0.5 ,  0.75, 1. , 1.25,  1.5 , 1.75, 2. ])

>>> x = np.linspace( 0, 2*pi, 100 ) # nützlich, um Funktionen über mehrere Punkte auszuwerten

>>> f = np.sin(x)

Dies ist nur der Anfang zur Verwendung von NumPy-Funktionen wie np.nullen zum Erstellen und Verwalten von Datenfeldern. Sie können diese verwenden, um Ihre ersten Preisdiagramme, Big-Data-Vergleichstabellen und mehr zu erstellen.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen