Maison > développement back-end > Tutoriel Python > Comment puis-je appliquer efficacement des fonctions aux tableaux NumPy ?

Comment puis-je appliquer efficacement des fonctions aux tableaux NumPy ?

Barbara Streisand
Libérer: 2024-12-18 04:42:16
original
929 Les gens l'ont consulté

How Can I Efficiently Apply Functions to NumPy Arrays?

Fonctions de vectorisation pour les tableaux Numpy

Pour mapper efficacement une fonction sur un tableau numpy, vous pouvez exploiter la puissance de la vectorisation, qui vous permet pour effectuer des opérations élément par élément sur le tableau. C'est beaucoup plus rapide que d'utiliser des approches basées sur des boucles comme la compréhension de listes.

Fonctions natives NumPy

Si la fonction que vous avez l'intention de mapper est déjà vectorisée en tant que fonction NumPy, comme np.square() pour la mise au carré des éléments, il est fortement recommandé de l'utiliser. Ce sera nettement plus rapide que les autres méthodes.

Vectorisation avec la vectorisation de NumPy

NumPy fournit la fonction de vectorisation pour les fonctions de vectorisation. Il enveloppe votre fonction pour permettre des opérations par éléments sur les tableaux :

import numpy as np

def f(x):
    return x ** 2

vf = np.vectorize(f)
x = np.array([1, 2, 3, 4, 5])
squares = vf(x)
Copier après la connexion

Une autre alternative consiste à utiliser vectorize sans initialiser un wrapper de fonction :

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

Autres méthodes de vectorisation

Autres méthodes de vectorisation include :

  • np.fromiter() : itère sur un générateur et construit un tableau.
  • np.array(list(map(f, x))) : utilise la carte fonction pour appliquer une fonction à chaque élément, puis la convertir en tableau.

Performance Considérations

Bien que toutes ces méthodes puissent vectoriser des fonctions, leurs performances peuvent varier. Des benchmarks ont montré que l'utilisation des fonctions natives de NumPy est la plus rapide si elles sont disponibles. Dans d'autres cas, vectorize et fromiter fonctionnent généralement mieux que np.array(list(map(f, x))).

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