Trouver la norme d'un tableau utilisant Numpy

Trouver la norme d'un tableau utilisant Numpy

Dans cet article, je décris trouver la norme d'un tableau nu. La norme d'un tableau est une fonction qui mappe le tableau à un nombre réel non négatif. Pour trouver la norme d'un tableau Numpy, nous utilisons le Numpy du Numpy.linalg.méthode norme. La méthode prend un tableau ou un objet de type tableau (Ex: Python Listes) en entrée et renvoie un flotteur ou un tableau de valeurs normes.

Voyons un exemple.

$ python3
Python 3.8.5 (par défaut, 8 mars 2021, 13:02:45)
[GCC 9.3.0] sur Linux2
Tapez "Help", "Copyright", "Crédits" ou "Licence" pour plus d'informations.
>>> Importer Numpy comme NP
>>> a = np.lispace (-4, 4, 9)
>>> A
Array ([- 4., -3., -2., -1., 0., 1., 2., 3., 4.])
>>> np.linalg.norme (a)
7.745966692414834

La norme par défaut calculée par Numpy est la norme L2 qui est également connue sous le nom de norme euclidienne. L'ordre de la norme peut être spécifié en utilisant le paramètre ord fourni à Numpy.linalg.norme. Continue d'en haut,

>>> np.linalg.norme (a, ord = 1)
20.0

La déclaration ci-dessus norme 1. La norme 1 est simplement la somme des valeurs absolues du tableau. En général, la norme d'un vecteur pour toute ordonnance est calculée comme suit:

(∑i | x | ord) 1 / ord

Où la sommation est effectuée sur la valeur absolue de chaque élément du tableau. On peut calculer la norme infinie en contournant NP.Inf comme commande. Norm Infinity est la valeur absolue maximale de tous les éléments du tableau.

>>> np.linalg.norme (a, ord = np.inf)
4.0

Supposons que nous ayons une matrice pour laquelle la norme doit être calculée.

>>> a = np.lispace (-4, 4, 9).Reshape (3, 3)
>>> A
Array ([[- 4., -3., -2.]],
[-1., 0., 1.]],
[2., 3., 4.]])
>>> np.linalg.norme (a)
7.745966692414834

Ce qui précède renvoie la norme euclidienne calculée sur toute la matrice. Mais il y a des scénarios où nous devrons calculer les normes sur un axe particulier. Numpy permet également à l'utilisation d'un axe de paramètre pour spécifier un axe le long de lequel la norme peut être calculée pour les matrices. En utilisant l'axe des paramètres, on peut passer l'axe à travers lequel la norme doit être calculée. L'axe 0 est la première dimension. En continuant à partir de l'exemple précédent, si nous spécifions axis = 0, la norme sera calculée à travers les lignes et spécifier axe = 1 calcule la norme à travers les colonnes.

>>> A
Array ([[- 4., -3., -2.]],
[-1., 0., 1.]],
[2., 3., 4.]])
>>> np.linalg.norme (a, axe = 0)
Array ([4.58257569, 4.24264069, 4.58257569])
>>> np.linalg.norme (a, axe = 1)
Array ([5.38516481, 1.41421356, 5.38516481])

S'il s'agit d'une matrice multidimensionnelle, un tuple d'entiers qui spécifie l'axe à travers lequel la norme doit être calculée peut être transmise au paramètre de l'axe.

>>> a = np.lispace (1, 8, 8).Reshape (2, 2, 2)
>>> A
Array ([[1., 2.]],
[3., 4.]],
[[5., 6.]],
[7., 8.]]]))
>>> np.linalg.norme (a, axe = (1, 2))
Array ([5.47722558, 13.19090596])
>>> A [0 ,:: ,:]
Array ([[1., 2.]],
[3., 4.]])
>>> np.linalg.norme (a [0 ,:::])
5.477225575051661
>>> a [1 ,:: ,:]
Array ([[5., 6.]],
[7., 8.]])
>>> np.linalg.norme (a [1 ,:::])
13.19090595827292

Dans l'exemple ci-dessus, lorsque nous avons spécifié l'axe = (1,2), la norme est calculée à travers l'axe 1 et 2 pour chaque sous-réseau dans l'axe 0.