Heim >Backend-Entwicklung >Python-Tutorial >Was ist die effizienteste Möglichkeit, Funktionen über NumPy-Arrays abzubilden?
Erkundung der effizienten Array-Zuordnung in NumPy
In dieser Diskussion befassen wir uns mit den effizientesten Methoden zur Zuordnung von Funktionen über NumPy-Arrays. Ein gängiger Ansatz besteht darin, ein Listenverständnis zu verwenden und anschließend zurück in ein NumPy-Array zu konvertieren:
import numpy as np x = np.array([1, 2, 3, 4, 5]) squarer = lambda t: t ** 2 squares = np.array([squarer(xi) for xi in x])
Dieser Ansatz kann jedoch aufgrund der Erstellung und Konvertierung von Python-Zwischenlisten Ineffizienzen aufweisen. Lassen Sie uns alternative Methoden erkunden, die möglicherweise eine verbesserte Leistung bieten.
Nutzung nativer NumPy-Funktionen
Wenn die Zielfunktion bereits in NumPy implementiert ist, ist es optimal, diese direkt zu nutzen, z demonstriert durch:
x ** 2
Dieser Ansatz ist aufgrund der inhärenten Optimierung von NumPys Native deutlich schneller als andere Methoden Funktionen.
Vektorisieren von Funktionen
Wenn die gewünschte Funktion nicht in NumPy enthalten ist, ist die Vektorisierung eine leistungsstarke Technik, die die elementweise Anwendung der Funktion auf das Array ermöglicht . Dies kann erreicht werden mit:
vf = np.vectorize(f) vf(x)
Dieser Ansatz bietet eine effiziente Implementierung für vektorisierte Operationen.
Verwendung von fromiter()
Der fromiter() Die Funktion kann verwendet werden, um einen Iterator zu erstellen, der Elemente basierend auf den bereitgestellten Funktions- und Array-Werten generiert:
np.fromiter((f(xi) for xi in x), x.dtype)
Dieser Ansatz eignet sich besonders zum Generieren benutzerdefinierter Array-Elemente aus einem Iterator.
Leistungsvergleich
Empirische Tests zeigen erhebliche Leistungsunterschiede zwischen verschiedenen Mapping-Methoden. Wenn die Funktion in NumPy vektorisiert ist, ist die direkte Nutzung dieser Funktion hinsichtlich der Geschwindigkeit beispiellos. Bei benutzerdefinierten Funktionen bietet die Vektorisierung oder fromiter() häufig einen erheblichen Vorteil gegenüber auf Listenverständnis basierenden Methoden.
Fazit
Der effizienteste Ansatz für die Zuordnung von Funktionen über NumPy-Arrays hängt von der spezifischen Funktion und den Dateneigenschaften ab. Wenn möglich, wird dringend empfohlen, native NumPy-Funktionen zu nutzen. Vektorisierung und fromiter() bieten effiziente Alternativen für benutzerdefinierte Funktionen. Leistungstests sind unerlässlich, um die optimale Methode für ein bestimmtes Szenario zu ermitteln.
Das obige ist der detaillierte Inhalt vonWas ist die effizienteste Möglichkeit, Funktionen über NumPy-Arrays abzubilden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!