Einführung in die NumPy Universal Functions

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Grundlagen der NumPy Universal Functions (ufuncs) erkunden. Ufuncs sind Funktionen, die auf ndarrays elementweise operieren und Array-Broadcasting, Typumwandlung und andere Standardfunktionen unterstützen. Wir werden die verschiedenen Methoden von ufuncs, die Broadcasting-Regeln, die Typumwandlungsregeln und wie man das Verhalten von ufuncs überschreiben kann, lernen.

Hinweis: Sie können im 08-universal-functions.ipynb Code schreiben. Einige Druckoperationen werden in den Schritten weggelassen, und Sie können die Ausgabe nach Bedarf drucken.

Grundlegende arithmetische Operationen

Die grundlegenden ufuncs operieren auf Skalaren, und das einfachste Beispiel ist der Additionoperator. Schauen wir uns an, wie wir den Additionoperator verwenden können, um zwei Arrays elementweise zu addieren.

import numpy as np

## Erstellen Sie zwei Arrays
arr1 = np.array([0, 2, 3, 4])
arr2 = np.array([1, 1, -1, 2])

## Addieren Sie die Arrays elementweise
result = arr1 + arr2

## Drucken Sie das Ergebnis
print(result)

Ausgabe:

array([1, 3, 2, 6])

Ufunc-Methoden

Ufuncs haben vier Methoden: reduce, accumulate, reduceat und outer. Diese Methoden sind nützlich für die Ausführung von Operationen auf Arrays. Schauen wir uns die reduce-Methode an.

import numpy as np

## Erstellen Sie ein Array
arr = np.arange(9).reshape(3, 3)

## Reduzieren Sie das Array entlang der ersten Achse
result = np.add.reduce(arr, 1)

## Drucken Sie das Ergebnis
print(result)

Ausgabe:

array([ 3, 12, 21])

Bestimmung des Ausgabetyps

Wenn nicht alle Eingabeargumente ndarrays sind, ist die Ausgabe einer ufunc nicht notwendigerweise ein ndarray. Der Ausgabetyp kann basierend auf den Eingabetypen und den Regeln der Typumwandlung bestimmt werden. Schauen wir uns ein Beispiel an.

import numpy as np

## Erstellen Sie ein Array
arr = np.arange(9).reshape(3, 3)

## Führen Sie eine Multiplikation durch und geben Sie den Ausgabetyp an
result = np.multiply.reduce(arr, dtype=float)

## Drucken Sie das Ergebnis
print(result)

Ausgabe:

array([ 0., 28., 80.])

Broadcasting

Broadcasting ist ein leistungsstarkes Feature von ufuncs, das es ermöglicht, Operationen auf Arrays mit unterschiedlichen Formen durchzuführen. Die Broadcasting-Regeln bestimmen, wie Arrays mit unterschiedlichen Formen während der Operationen behandelt werden. Schauen wir uns ein Beispiel an.

import numpy as np

## Erstellen Sie zwei Arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([[1], [2], [3]])

## Multiplizieren Sie die Arrays
result = arr1 * arr2

## Drucken Sie das Ergebnis
print(result)

Ausgabe:

array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])

Typumwandlungsregeln

Wenn es keine Kernschleifenimplementierung für die angegebenen Eingabetypen gibt, wird die Typumwandlung bei den Eingaben einer ufunc durchgeführt. Die Umwandlungsregeln bestimmen, wann ein Datentyp sicher in einen anderen Datentyp umgewandelt werden kann. Schauen wir uns ein Beispiel an.

import numpy as np

## Überprüfen Sie, ob int sicher in float umgewandelt werden kann
result = np.can_cast(np.int, np.float)

## Drucken Sie das Ergebnis
print(result)

Ausgabe:

True

Überschreiben des Ufunc-Verhaltens

Klassen, einschließlich von ndarray-Unterklassen, können das Verhalten von Ufuncs bei der Ausführung auf ihnen überschreiben, indem sie bestimmte spezielle Methoden definieren. Dadurch ist eine Anpassung des Ufunc-Verhaltens möglich. Schauen wir uns ein Beispiel an.

import numpy as np

## Definieren Sie eine benutzerdefinierte Klasse
class MyArray(np.ndarray):
    def __add__(self, other):
        print("Benutzerdefinierte Additionsmethode aufgerufen")
        return super().__add__(other)

## Erstellen Sie eine Instanz der benutzerdefinierten Klasse
arr = MyArray([1, 2, 3])

## Führen Sie eine Addition durch
result = arr + 1

## Drucken Sie das Ergebnis
print(result)

Ausgabe:

Benutzerdefinierte Additionsmethode aufgerufen
[2 3 4]

Zusammenfassung

In diesem Lab haben wir die Grundlagen der NumPy Universal Functions (Ufuncs) kennengelernt. Wir haben die verschiedenen Methoden von Ufuncs, die Broadcasting-Regeln, die Typumwandlungsregeln und die Vorgehensweise beim Überschreiben des Ufunc-Verhaltens untersucht. Ufuncs sind ein leistungsstarkes Werkzeug zur effizienten Durchführung elementarer Operationen auf Arrays.