Maison > développement back-end > Tutoriel Python > Quels sont les moyens les plus efficaces de mapper des fonctions sur des tableaux NumPy ?

Quels sont les moyens les plus efficaces de mapper des fonctions sur des tableaux NumPy ?

Mary-Kate Olsen
Libérer: 2024-12-26 09:55:10
original
577 Les gens l'ont consulté

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

Mappage de fonctions sur des tableaux NumPy

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.

Fonctions NumPy natives

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

Compréhension des tableaux et Map

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

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

np.fromiter

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

Vectorisation

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

Considérations sur les performances

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!

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