Heim > Backend-Entwicklung > Python-Tutorial > Was ist die effizienteste Möglichkeit, Funktionen über ein NumPy-Array abzubilden?

Was ist die effizienteste Möglichkeit, Funktionen über ein NumPy-Array abzubilden?

Barbara Streisand
Freigeben: 2025-01-04 03:50:39
Original
427 Leute haben es durchsucht

What's the Most Efficient Way to Map Functions Over a NumPy Array?

Effiziente Numpy-Array-Zuordnungsstrategien

Wenn es um die Zuordnung von Funktionen über ein Numpy-Array geht, ist Leistungseffizienz entscheidend. Es stellt sich eine grundlegende Frage: „Was ist der effizienteste Ansatz für Zuordnungsvorgänge?“

Ineffizienter Ansatz: Python-Listenverständnis

Das in der Frage bereitgestellte Beispiel verwendet eine Liste Verständnis:

squares = np.array([squarer(xi) for xi in x])
Nach dem Login kopieren

Obwohl dieser Ansatz funktioniert, weist er aufgrund der Zwischenkonvertierung von einer Python-Liste zurück in eine inhärente Ineffizienz auf Numpy-Array.

Optimierte Strategien

Durch das Testen verschiedener Methoden entstehen die optimalen Lösungen:

1. Verwenden Sie integrierte Numpy-Funktionen:

Wenn die Funktion, die Sie zuordnen, bereits in Numpy vektorisiert ist (z. B. x^2), bietet die direkte Verwendung eine bessere Leistung:

squares = x ** 2
Nach dem Login kopieren

2. Vektorisierung mit numpy.vectorize:

Bei benutzerdefinierten Funktionen zeigt die Vektorisierung mit numpy.vectorize erhebliche Geschwindigkeitsgewinne:

f = lambda x: x ** 2
vf = np.vectorize(f)
squares = vf(x)
Nach dem Login kopieren

3. numpy.fromiter:

Dieser Ansatz erstellt einen Iterator aus der Funktion und verwendet numpy.fromiter, um effizient ein Numpy-Array zu erstellen:

squares = np.fromiter((squarer(xi) for xi in x), x.dtype)
Nach dem Login kopieren

4. numpy.array(list(map(...)):

Eine weitere optimierte Alternative ist die Verwendung von Map und die anschließende Konvertierung in ein Numpy-Array:

squares = np.array(list(map(squarer, x)))
Nach dem Login kopieren

Durchgeführte Benchmarks Die Verwendung von Perfplot zeigt, dass diese optimierten Methoden den ursprünglichen Ansatz zum Listenverständnis deutlich übertreffen.

Das obige ist der detaillierte Inhalt vonWas ist die effizienteste Möglichkeit, Funktionen über ein NumPy-Array abzubilden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage