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
Barbara StreisandOriginal
2025-01-04 03:50:39432Durchsuche

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])

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

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)

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)

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)))

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!

Stellungnahme:
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