Présentation des Fonctions Universelles NumPy

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer les bases des Fonctions Universelles NumPy (ufuncs). Les ufuncs sont des fonctions qui opèrent sur des ndarrays de manière élément par élément, en supportant la diffusion de tableaux, le moulage de type et d'autres fonctionnalités standard. Nous allons apprendre les différentes méthodes des ufuncs, les règles de diffusion, les règles de moulage de type et la manière de modifier le comportement des ufuncs.

Note : Vous pouvez écrire du code dans 08-universal-functions.ipynb. Certaines opérations d'impression sont omises dans les étapes, et vous pouvez imprimer la sortie selon vos besoins.

Opérations arithmétiques de base

Les ufuncs de base opèrent sur des scalaires, et l'exemple le plus simple est l'opérateur d'addition. Voyons comment nous pouvons utiliser l'opérateur d'addition pour additionner deux tableaux élément par élément.

import numpy as np

## Créez deux tableaux
arr1 = np.array([0, 2, 3, 4])
arr2 = np.array([1, 1, -1, 2])

## Ajoutez les tableaux élément par élément
result = arr1 + arr2

## Affichez le résultat
print(result)

Sortie :

array([1, 3, 2, 6])

Méthodes des ufuncs

Les ufuncs ont quatre méthodes : reduce, accumulate, reduceat et outer. Ces méthodes sont utiles pour effectuer des opérations sur des tableaux. Jetons un coup d'œil à la méthode reduce.

import numpy as np

## Créez un tableau
arr = np.arange(9).reshape(3, 3)

## Rédigez le tableau le long du premier axe
result = np.add.reduce(arr, 1)

## Affichez le résultat
print(result)

Sortie :

array([ 3, 12, 21])

Détermination du type de sortie

La sortie d'une ufunc n'est pas nécessairement un ndarray si tous les arguments d'entrée ne sont pas des ndarrays. Le type de sortie peut être déterminé en fonction des types d'entrée et des règles de moulage de type. Voyons un exemple.

import numpy as np

## Créez un tableau
arr = np.arange(9).reshape(3, 3)

## Effectuez une multiplication et spécifiez le type de sortie
result = np.multiply.reduce(arr, dtype=float)

## Affichez le résultat
print(result)

Sortie :

array([ 0., 28., 80.])

Diffusion

La diffusion est une fonction puissante des ufuncs qui permet d'effectuer des opérations sur des tableaux de formes différentes. Les règles de diffusion déterminent la manière dont les tableaux de formes différentes sont traités pendant les opérations. Voyons un exemple.

import numpy as np

## Créez deux tableaux
arr1 = np.array([1, 2, 3])
arr2 = np.array([[1], [2], [3]])

## Multipliez les tableaux
result = arr1 * arr2

## Affichez le résultat
print(result)

Sortie :

array([[1, 2, 3],
       [2, 4, 6],
       [3, 6, 9]])

Règles de conversion de type

La conversion de type est effectuée sur les entrées d'une ufunc lorsqu'il n'y a pas de mise en œuvre de boucle principale pour les types d'entrée fournis. Les règles de conversion déterminent quand un type de données peut être converti en toute sécurité en un autre type de données. Voyons un exemple.

import numpy as np

## Vérifiez si un entier peut être converti en toute sécurité en un nombre à virgule flottante
result = np.can_cast(np.int, np.float)

## Affichez le résultat
print(result)

Sortie :

True

Remplacer le comportement des ufuncs

Les classes, y compris les sous-classes ndarray, peuvent remplacer la manière dont les ufuncs agissent sur elles en définissant certaines méthodes spéciales. Cela permet de personnaliser le comportement des ufuncs. Voyons un exemple.

import numpy as np

## Définissez une classe personnalisée
class MyArray(np.ndarray):
    def __add__(self, other):
        print("Méthode d'addition personnalisée appelée")
        return super().__add__(other)

## Créez une instance de la classe personnalisée
arr = MyArray([1, 2, 3])

## Effectuez une addition
result = arr + 1

## Affichez le résultat
print(result)

Sortie :

Méthode d'addition personnalisée appelée
[2 3 4]

Sommaire

Dans ce laboratoire, nous avons appris les bases des Fonctions Universelles NumPy (ufuncs). Nous avons exploré les différentes méthodes des ufuncs, les règles de diffusion, les règles de conversion de type et la manière de remplacer le comportement des ufuncs. Les ufuncs sont un outil puissant pour effectuer efficacement des opérations élément par élément sur les tableaux.