Python

Python Menu

NumPy ist eine Python-Bibliothek für die Arbeit mit Arrays. Sie hat auch Funktionen für die Arbeit im Bereich der linearen Algebra, Fourier-Transformation und Matrizen.

NumPy wurde im Jahr 2005 von Travis Oliphant entwickelt. Es ist ein Open-Source-Projekt und Sie können es frei verwenden. NumPy steht für Numerisches Python.

Warum NumPy?

In Python haben wir Listen, die den Zweck von Arrays erfüllen, aber sie sind langsam in der Verarbeitung. NumPy zielt darauf ab, ein Array-Objekt bereitzustellen, das bis zu 50-mal schneller ist als herkömmliche Python-Listen. Das Array-Objekt in NumPy heißt ndarray, es bietet eine Menge unterstützender Funktionen, die das Arbeiten mit ndarray sehr einfach machen. Arrays werden sehr häufig in der Datenwissenschaft verwendet, wo Geschwindigkeit und Ressourcen sehr wichtig sind.

Warum ist NumPy schneller als Listen?

NumPy-Arrays werden im Gegensatz zu Listen an einer kontinuierlichen Stelle im Speicher gespeichert, sodass Prozesse sehr effizient auf sie zugreifen und sie manipulieren können. Dieses Verhalten wird in der Informatik als Lokalität der Referenz bezeichnet. Dies ist der Hauptgrund, warum NumPy schneller ist als Listen. Außerdem ist es für die Arbeit mit aktuellen CPU-Architekturen optimiert.

Installation von NumPy

Wenn Python und PIP bereits auf einem System installiert sind, dann ist die Installation von NumPy sehr einfach.

Installiere es mit diesem Befehl:

C:\Users\Dein Name>pip install numpy

Wenn dieser Befehl fehlschlägt, dann benutze eine Python-Distribution, die bereits NumPy installiert hat, wie z.B. Anaconda, Spyder etc.

NumPy importieren

Sobald NumPy installiert ist, importiere es in deine Anwendungen, indem du das Schlüsselwort import hinzufügst:

import numpy

Beispiel:

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

NumPy als np

NumPy wird normalerweise unter dem Alias np importiert.

Lege beim Import einen Alias mit dem Schlüsselwort as an:

import numpy as np

Beispiel:

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

Prüfen der NumPy-Version

Die Versionszeichenfolge wird unter dem Attribut __version__ gespeichert.

import numpy as np
print(np.__version__)

NumPy Arrays

NumPy-Arrays sind großartige Alternativen zu Python-Listen. Einige wichtige Vorteile von NumPy-Arrays sind, dass sie schnell und einfach zu bearbeiten sind und dem Benutzer die Möglichkeit geben, Berechnungen über ganze Arrays durchzuführen.

Im folgenden Beispiel müssen Sie zunächst zwei Python-Listen erstellen. Dann importierst du das numpy-Paket und erstellst numpy-Arrays aus den neu erstellten Listen.

Dann können wir elementweise Berechnungen über Größe und Gewicht durchführen. Zum Beispiel könnten Sie alle 6 der obigen Beobachtungen von Größe und Gewicht nehmen und den BMI für jede Beobachtung mit einer einzigen Gleichung berechnen. Diese Operationen sind sehr schnell und rechnerisch effizient. Sie sind besonders hilfreich, wenn die Daten 1000e von Beobachtungen enthalten.

# Importiert das numpy-Paket als np import numpy as np
# Erstellt 2 neue Listen Größe und Gewicht größe = [1.87, 1.87, 1.82, 1.91, 1.90, 1.85] gewicht = [81.65, 97.52, 95.25, 92.98, 86.18, 88.45]
# Erstellt 2 numpy-Arrays aus Größe und Gewicht np_größe = np.array(größe) np_gewicht = np.array(gewicht)
# Gibt den Typ von np_größe aus print(type(np_größe))
# Berechnet BMI bmi = np_gewicht / np_größe ** 2
# das Ergebnis ausgeben print(bmi)

Unterteilung

Eine weitere großartige Funktion von NumPy-Arrays ist die Möglichkeit der Unterteilung. Wenn du zum Beispiel wissen willst, welche Beobachtungen in unserem BMI-Array über 23 liegen, kannst du das schnell herausfinden.

# Importiert das numpy-Paket als np import numpy as np
# Erstellt 2 neue Listen Größe und Gewicht größe = [1.87, 1.87, 1.82, 1.91, 1.90, 1.85] gewicht = [81.65, 97.52, 95.25, 92.98, 86.18, 88.45]
# Erstellt 2 numpy-Arrays aus Größe und Gewicht np_größe = np.array(größe) np_gewicht = np.array(gewicht)
# Gibt den Typ von np_größe aus print(type(np_größe))
# Berechnet BMI bmi = np_gewicht / np_größe ** 2
# Gib BMI nur bei bmi > 25 aus print(bmi[bmi > 25])

Übung

Konvertiere zuerst die Liste der Gewichte von einer Liste in ein NumPy-Array. Anschließend müssen alle Gewichte von Kilogramm in Pfund umgerechnet werden. Verwende dazu die skalare Umrechnung von 2,2 lbs pro Kilogramm. Gib abschließend das resultierende Array mit den Gewichten in Pfund aus.

gewicht_kg = [35, 40, 45, 50, 55, 60, 65]
import numpy as np
# Erzeugen eines Numpy-Arrays np_gewicht_kg aus gewicht_kg
# Erzeuge np_gewicht_lbs aus np_gewicht_kg
# Gib np_weight_lbs aus
gewicht_kg = [35, 40, 45, 50, 55, 60, 65]
import numpy as np
# Erzeugen eines Numpy-Arrays np_gewicht_kg aus gewicht_kg np_gewicht_kg = np.array(gewicht_kg)
# Erzeuge np_gewicht_lbs aus np_gewicht_kg np_gewicht_lbs = np_gewicht_kg * 2.2
# Gib np_weight_lbs aus print(np_gewicht_lbs)
test_output_contains("[ 77. 88. 99. 110. 121. 132. 143.]") success_msg("Hervorragend!")

NumPy ufuncs

Was sind ufuncs?

ufuncs steht für "Universal Functions" und es sind NumPy-Funktionen, die auf dem ndarray-Objekt operieren.

Warum ufuncs?

ufuncs werden verwendet, um die Vektorisierung in NumPy zu implementieren, die viel schneller ist als die Iteration über Elemente. Sie bieten auch Broadcasting und zusätzliche Methoden wie reduce, accumulate usw., die für Berechnungen sehr hilfreich sind.

ufuncs nehmen auch zusätzliche Argumente entgegen, wie:

  • where - boolesches Array oder Bedingung, die definiert, wo die Operationen stattfinden sollen.
  • dtype - definiert den Rückgabetyp von Elementen.
  • out - Ausgabe-Array, in das der Rückgabewert kopiert werden soll.

Was ist Vektorisierung?

Die Umwandlung von iterativen Anweisungen in eine vektorbasierte Operation wird Vektorisierung genannt.

Sie ist schneller, da moderne CPUs für solche Operationen optimiert sind.

Addieren der Elemente zweier Listen

    liste 1: [1, 2, 3, 4]
    liste 2: [4, 5, 6, 7]

Eine Möglichkeit, dies zu tun, ist, über beide Listen zu iterieren und dann jedes Element zu summieren.

Beispiel ohne ufunc:

x = [1, 2, 3, 4] y = [4, 5, 6, 7] z = []
for i, j in zip(x, y): z.append(i + j) print(z)

NumPy hat dafür eine ufunc, genannt add(x, y), die das gleiche Ergebnis liefert.

Mit ufunc können wir die Funktion add() verwenden:

import numpy as np
x = [1, 2, 3, 4] y = [4, 5, 6, 7] z = np.add(x, y) print(z)

Einführung

Python Basics

Python Advance

Data Science Python Tutorials

Python Eingebaute Funktionen