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

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

Barbara Streisand
Libérer: 2024-12-13 17:03:09
original
667 Les gens l'ont consulté

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

Exploration du mappage de tableau efficace dans NumPy

Dans cette discussion, nous approfondissons les méthodes les plus efficaces pour mapper des fonctions sur des tableaux NumPy. Une approche courante consiste à utiliser une compréhension de liste suivie d'une reconversion en un tableau NumPy :

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])
Copier après la connexion

Cependant, cette approche peut présenter des inefficacités en raison de la création et de la conversion de listes Python intermédiaires. Explorons des méthodes alternatives qui offrent potentiellement des performances améliorées.

Exploiter les fonctions natives de NumPy

Si la fonction cible est déjà implémentée dans NumPy, il est optimal de l'utiliser directement, comme démontré par :

x ** 2
Copier après la connexion

Cette approche est nettement plus rapide que les autres méthodes en raison de l'optimisation inhérente du langage natif de NumPy fonctions.

Fonctions de vectorisation

Lorsque la fonction souhaitée n'est pas native de NumPy, la vectorisation est une technique puissante qui permet l'application de la fonction élément par élément au tableau . Cela peut être accompli en utilisant :

vf = np.vectorize(f)
vf(x)
Copier après la connexion

Cette approche offre une implémentation efficace pour les opérations vectorisées.

Utilisation de fromiter()

Le fromiter() La fonction peut être utilisée pour créer un itérateur qui génère des éléments basés sur la fonction fournie et les valeurs du tableau :

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

Cette approche est particulièrement convient pour générer des éléments de tableau personnalisés à partir d'un itérateur.

Comparaison des performances

Les tests empiriques révèlent des différences de performances significatives entre les différentes méthodes de mappage. Si la fonction est vectorisée dans NumPy, l'utilisation directe de cette fonction est sans précédent en termes de vitesse. Pour les fonctions personnalisées, la vectorisation ou fromiter() offre souvent un avantage substantiel par rapport aux méthodes basées sur la compréhension de liste.

Conclusion

L'approche la plus efficace pour mapper des fonctions sur des tableaux NumPy dépend de la fonction spécifique et des caractéristiques des données. Si possible, il est fortement recommandé d'exploiter les fonctions natives de NumPy. La vectorisation et fromiter() offrent des alternatives efficaces pour les fonctions personnalisées. Les tests de performances sont essentiels pour déterminer la méthode optimale pour un scénario donné.

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