Heim > Backend-Entwicklung > Python-Tutorial > Was sind die effizientesten Möglichkeiten, Funktionen NumPy-Arrays zuzuordnen?

Was sind die effizientesten Möglichkeiten, Funktionen NumPy-Arrays zuzuordnen?

Mary-Kate Olsen
Freigeben: 2024-12-26 09:55:10
Original
577 Leute haben es durchsucht

What are the most efficient ways to map functions to NumPy arrays?

Funktionen zu NumPy-Arrays zuordnen

Einführung

Zur Zuordnung einer Funktion zu einem NumPy-Array gehört die Anwendung einer Funktion auf jedes Element im Array, um ein neues Array mit den Ergebnissen zu erhalten. Die in der Frage beschriebene Methode mit Listenverständnis und Konvertierung in ein NumPy-Array ist zwar unkompliziert, aber möglicherweise nicht der effizienteste Ansatz. In diesem Artikel werden verschiedene Methoden zum effizienten Zuordnen von Funktionen über NumPy-Arrays untersucht.

Native NumPy-Funktionen

Wenn die Funktion, die Sie anwenden möchten, bereits eine vektorisierte NumPy-Funktion ist, z. B. Quadratwurzel oder Logarithmus, verwenden Sie Die nativen Funktionen von NumPy sind direkt die schnellste Option.

import numpy as np

x = np.array([1, 2, 3, 4, 5])
squares = np.square(x)  # Fast and straightforward
Nach dem Login kopieren

Array-Verständnis und Karte

Für benutzerdefinierte Funktionen, die nicht in NumPy vektorisiert sind, ist die Verwendung eines Array-Verständnisses im Allgemeinen effizienter als die Verwendung einer herkömmlichen Schleife:

import numpy as np

def my_function(x):
    # Define your custom function

x = np.array([1, 2, 3, 4, 5])
squares = np.array([my_function(xi) for xi in x])  # Reasonably efficient
Nach dem Login kopieren

Die Kartenfunktion kann ebenfalls verwendet werden, obwohl sie ist geringfügig weniger effizient als Array-Verständnis:

import numpy as np

def my_function(x):
    # Define your custom function

x = np.array([1, 2, 3, 4, 5])
squares = np.array(list(map(my_function, x)))  # Slightly less efficient
Nach dem Login kopieren

np.fromiter

The Die Funktion np.fromiter ist eine weitere Option zum Zuordnen von Funktionen, insbesondere in Fällen, in denen die Funktion einen Iterator generiert. Es ist jedoch etwas weniger effizient als das Array-Verstehen:

import numpy as np

def my_function(x):
    # Define your custom function
    return iter([my_function(xi) for xi in x])  # Yields values as an iterator

x = np.array([1, 2, 3, 4, 5])
squares = np.fromiter(my_function(x), x.dtype)  # Less efficient, but works with iterators
Nach dem Login kopieren

Vektorisierung

In einigen Fällen ist es möglich, Ihre benutzerdefinierte Funktion mithilfe des Vektorisierungs-Frameworks von NumPy zu vektorisieren. Bei diesem Ansatz wird eine neue Funktion erstellt, die elementweise auf das Array angewendet werden kann:

import numpy as np

def my_function(x):
    # Define your custom function

x = np.array([1, 2, 3, 4, 5])
my_vectorized_function = np.vectorize(my_function)
squares = my_vectorized_function(x)  # Most efficient, but may not always be possible
Nach dem Login kopieren

Leistungsüberlegungen

Die Wahl der Methode hängt von Faktoren wie der Größe des Arrays, die Komplexität der Funktion und ob NumPy eine vektorisierte Version der Funktion bereitstellt. Für kleine Arrays und einfache Funktionen kann das Array-Verständnis oder die Zuordnung ausreichend sein. Für größere Arrays oder komplexere Funktionen wird für eine optimale Effizienz die Verwendung der nativen NumPy-Funktionen oder der Vektorisierung empfohlen.

Das obige ist der detaillierte Inhalt vonWas sind die effizientesten Möglichkeiten, Funktionen NumPy-Arrays zuzuordnen?. 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