Skip to content

Vous pouvez calculer la valeur absolue élément par élément dans un tableau NumPy ( 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ ) en utilisant 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() , 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌() ou 𝐧‌𝐩‌.𝐟‌𝐚‌𝐛‌𝐬‌() . Notez que 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() est simplement un alias pour 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌() . De plus, la fonction intégrée 𝐚‌𝐛‌𝐬‌() peut être utilisée.

À partir de la version 1.26.2 de NumPy, ces fonctions ne sont pas disponibles en tant que méthodes de 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ .

La version de NumPy utilisée dans cet article est la suivante. Notez que les fonctionnalités peuvent varier selon les versions.

import numpy as np print(np.__version__) # 1.26.2 

Comment utiliser 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() et 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌()

𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() est un alias pour 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌()

𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() est un alias pour 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌() .

print(np.abs) # <ufunc 'absolute'> print(np.abs is np.absolute) # True 

Dans l’exemple de code suivant, 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() est utilisé, mais 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌() peut être utilisé de la même manière.

Utilisation de la base

Passer un 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ à 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() a renvoyé un nouveau 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ , avec chaque élément converti en sa valeur absolue.

a = np.array([-2, -1, 0, 1, 2]) print(np.abs(a)) # [2 1 0 1 2] print(type(np.abs(a))) # <class 'numpy.ndarray'> 

Vous pouvez définir non seulement 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ mais également des objets de type tableau tels que des listes dans 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() . La valeur de retour est toujours une 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ .

l = [-2, -1, 0, 1, 2] print(np.abs(l)) # [2 1 0 1 2] print(type(np.abs(l))) # <class 'numpy.ndarray'> 

Pour la conversion entre 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ et les listes, consultez l’article suivant.

Vous pouvez également définir des valeurs scalaires pour 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() .

print(np.abs(-100)) # 100 print(type(np.abs(-100))) # <class 'numpy.int64'> 

Renvoie 𝐢‌𝐧‌𝐭‌ pour 𝐢‌𝐧‌𝐭‌ , 𝐟‌𝐥‌𝐨‌𝐚‌𝐭‌ pour 𝐟‌𝐥‌𝐨‌𝐚‌𝐭‌

𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() préserve le type de données ( 𝐝‌𝐭‌𝐲‌𝐩‌𝐞‌ ) de l’entrée 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ . Il renvoie un entier ( 𝐢‌𝐧‌𝐭‌ ) 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ pour les entrées entières et un entier à virgule flottante ( 𝐟‌𝐥‌𝐨‌𝐚‌𝐭‌ ) 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ pour les entrées à virgule flottante.

a_int = np.array([-2, -1, 0, 1, 2]) print(a_int.dtype) # int64 print(np.abs(a_int)) # [2 1 0 1 2] print(np.abs(a_int).dtype) # int64 

a_float = np.array([-2.0, -1.0, 0, 1.0, 2.0]) print(a_float.dtype) # float64 print(np.abs(a_float)) # [2. 1. 0. 1. 2.] print(np.abs(a_float).dtype) # float64 

Pour plus de détails sur le type de données ( 𝐝‌𝐭‌𝐲‌𝐩‌𝐞‌ ) dans NumPy, consultez l’article suivant.

Prend également en charge les nombres complexes

En Python, les nombres complexes ( 𝐜‌𝐨‌𝐦‌𝐩‌𝐥‌𝐞‌𝐱‌ ) peuvent être représentés en utilisant 𝐣‌ comme unité imaginaire.

𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() prend également en charge les nombres complexes ( 𝐜‌𝐨‌𝐦‌𝐩‌𝐥‌𝐞‌𝐱‌ ), en les convertissant en leurs valeurs absolues (module ou grandeur). Le résultat est toujours un nombre à virgule flottante ( 𝐟‌𝐥‌𝐨‌𝐚‌𝐭‌ ), même si la valeur absolue est un entier.

a_complex = np.array([3 + 4j, 5 + 12j]) print(a_complex.dtype) # complex128 print(np.abs(a_complex)) # [ 5. 13.] print(np.abs(a_complex).dtype) # float64 

Fonction 𝐚‌𝐛‌𝐬‌() intégrée pour 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌

Étant donné que 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ implémente la méthode spéciale __𝐚‌𝐛‌𝐬‌__() , il peut être utilisé avec la fonction 𝐚‌𝐛‌𝐬‌() intégré de Python .

a = np.array([-2, -1, 0, 1, 2]) print(a.__abs__()) # [2 1 0 1 2] print(abs(a)) # [2 1 0 1 2] print(type(abs(a))) # <class 'numpy.ndarray'> 

Pour 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ , 𝐚‌𝐛‌𝐬‌() peut être utilisé de la même manière que 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌() (= 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() ).

La fonction 𝐚‌𝐛‌𝐬‌ peut être utilisée comme raccourci pour 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌𝐨‌𝐥‌𝐮‌𝐭‌𝐞‌ sur les ndarrays. numpy.absolute — Manuel NumPy v1.26

Comme 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() , il prend également en charge les nombres complexes ( 𝐜‌𝐨‌𝐦‌𝐩‌𝐥‌𝐞‌𝐱‌ ).

a_complex = np.array([3 + 4j, 5 + 12j]) print(abs(a_complex)) # [ 5. 13.] 

Différence entre 𝐧‌𝐩‌.𝐟‌𝐚‌𝐛‌𝐬‌() et 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌()

𝐧‌𝐩‌.𝐟‌𝐚‌𝐛‌𝐬‌() calcule la valeur absolue élément par élément dans une fonction 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ , de manière similaire à 𝐧‌𝐩‌.𝐚‌𝐛‌𝐬‌() . Cependant, elle renvoie automatiquement un nombre à virgule flottante ( 𝐟‌𝐥‌𝐨‌𝐚‌𝐭‌ ), même si l’entrée est un entier ( 𝐢‌𝐧‌𝐭‌ ).

a_int = np.array([-2, -1, 0, 1, 2]) print(a_int.dtype) # int64 print(np.fabs(a_int)) # [2. 1. 0. 1. 2.] print(np.fabs(a_int).dtype) # float64 

𝐦‌𝐚‌𝐭‌𝐡‌.𝐟‌𝐚‌𝐛‌𝐬‌() ne prend en charge que les nombres réels et génère une erreur pour les nombres complexes ( 𝐜‌𝐨‌𝐦‌𝐩‌𝐥‌𝐞‌𝐱‌ ).

a_complex = np.array([3 + 4j, 5 + 12j]) # print(np.fabs(a_complex)) # TypeError: ufunc 'fabs' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''