Maison > développement back-end > Tutoriel Python > Quel est le moyen le plus efficace de mapper des fonctions sur un tableau NumPy ?

Quel est le moyen le plus efficace de mapper des fonctions sur un tableau NumPy ?

Barbara Streisand
Libérer: 2025-01-04 03:50:39
original
436 Les gens l'ont consulté

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

Stratégies efficaces de mappage de tableau Numpy

Lorsqu'il s'agit de mapper des fonctions sur un tableau Numpy, l'efficacité des performances est cruciale. Une question fondamentale se pose : « Quelle est l'approche la plus efficace pour les opérations de cartographie ? »

Approche inefficace : compréhension de liste Python

L'exemple fourni dans la question utilise une liste compréhension :

squares = np.array([squarer(xi) for xi in x])
Copier après la connexion

Bien que cette approche fonctionne, elle présente des inefficacités inhérentes en raison de la conversion intermédiaire d'une liste Python vers une Tableau Numpy.

Stratégies optimisées

En testant diverses méthodes, les solutions optimales émergent :

1. Utilisez les fonctions Numpy intégrées :

Si la fonction que vous mappez est déjà vectorisée dans Numpy (par exemple, x^2), son utilisation directe offre des performances supérieures :

squares = x ** 2
Copier après la connexion

2. Vectorisation avec numpy.vectorize :

Pour les fonctions personnalisées, la vectorisation avec numpy.vectorize montre des gains de vitesse significatifs :

f = lambda x: x ** 2
vf = np.vectorize(f)
squares = vf(x)
Copier après la connexion

3. numpy.fromiter :

Cette approche crée un itérateur à partir de la fonction et utilise numpy.fromiter pour construire efficacement un tableau Numpy :

squares = np.fromiter((squarer(xi) for xi in x), x.dtype)
Copier après la connexion

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

Une autre alternative optimisée consiste à utiliser map puis à la convertir en un tableau Numpy :

squares = np.array(list(map(squarer, x)))
Copier après la connexion

Benchmarks effectués l'utilisation de perfplot démontre que ces méthodes optimisées surpassent de loin l'approche originale de compréhension de liste.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal