Introduction
Le mappage d'une fonction sur un tableau NumPy implique d'appliquer une fonction à chaque élément dans le tableau pour obtenir un nouveau tableau contenant les résultats. Bien que la méthode décrite dans la question utilisant la compréhension de liste et la conversion en tableau NumPy soit simple, ce n'est peut-être pas l'approche la plus efficace. Cet article explore diverses méthodes pour mapper efficacement des fonctions sur des tableaux NumPy.
Si la fonction que vous souhaitez appliquer est déjà une fonction NumPy vectorisée, telle que racine carrée ou logarithme, en utilisant Les fonctions natives de NumPy sont directement l'option la plus rapide.
import numpy as np x = np.array([1, 2, 3, 4, 5]) squares = np.square(x) # Fast and straightforward
Pour les fonctions personnalisées qui ne sont pas vectorisées dans NumPy, utiliser une compréhension de tableau est généralement plus efficace que d'utiliser une boucle traditionnelle :
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
La fonction map peut également être utilisée, même si elle est légèrement moins efficace que la compréhension de tableau :
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
Le La fonction np.fromiter est une autre option pour mapper les fonctions, en particulier dans les cas où la fonction génère un itérateur. Cependant, elle est légèrement moins efficace que la compréhension de tableau :
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
Dans certains cas, il est possible de vectoriser votre fonction personnalisée à l'aide du framework de vectorisation de NumPy. Cette approche implique la création d'une nouvelle fonction qui peut être appliquée élément par élément au tableau :
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
Le choix de la méthode dépend de facteurs tels que la taille du tableau, la complexité de la fonction et si NumPy fournit une version vectorisée de la fonction. Pour les petits tableaux et les fonctions simples, la compréhension des tableaux ou la carte peuvent suffire. Pour les tableaux plus grands ou les fonctions plus complexes, l'utilisation des fonctions natives NumPy ou de la vectorisation est recommandée pour une efficacité optimale.
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!