Znalezienie normy tablicy za pomocą Numpy

Znalezienie normy tablicy za pomocą Numpy

W tym poście opisuję znalezienie normy tablicy Numpy. Norma tablicy jest funkcją, która mapuje tablicę na nieujemną liczbę rzeczywistą. Aby znaleźć normę numpy, używamy Numpy's Numpy.Linalg.Metoda Norm. Metoda przyjmuje tablicę lub obiekt podobny do tablicy (np.: Listy Python) jako wejście i zwraca pływak lub tablicę wartości norm.

Zobaczmy przykład.

$ Python3
Python 3.8.5 (domyślnie, 8 marca 2021, 13:02:45)
[GCC 9.3.0] na Linux2
Wpisz „Pomoc”, „Copyright”, „Kredyty” lub „Licencja”, aby uzyskać więcej informacji.
>>> Importuj Numpy jako NP
>>> a = np.Linspace (-4, 4, 9)
>>> a
tablica ([-4., -3., -2., -1., 0., 1., 2., 3., 4.])
>>> np.Linalg.Norm (a)
7.745966692414834

Domyślną normą obliczoną przez Numpy jest norca L2, znana również jako norma euklidesowa. Kolejność normy można określić za pomocą parametru ORD dostarczonego do Numpy.Linalg.norma. Kontynuowanie z góry,

>>> np.Linalg.Norm (a, ord = 1)
20.0

Powyższa instrukcja obliczona norma 1. Norm 1 jest po prostu sumą wartości bezwzględnych tablicy. Ogólnie rzecz biorąc, norma wektora dla dowolnego zamówienia jest obliczana jako:

(∑i | x | ord) 1/ord

Gdzie podsumowanie jest wykonywane w wartości bezwzględnej każdego elementu tablicy. Można obliczyć norię nieskończoności NP.Inf jako zamówienie. Norm Infinity to maksymalna wartość bezwzględna wszystkich elementów w tablicy.

>>> np.Linalg.norma (a, ord = np.inf)
4.0

Załóżmy, że mamy matrycę, dla której należy obliczyć normę.

>>> a = np.Linspace (-4, 4, 9).Reshape (3, 3)
>>> a
tablica ([[-4., -3., -2.],
[-1., 0., 1.],
[2., 3., 4.]])
>>> np.Linalg.Norm (a)
7.745966692414834

Powyższe zwraca normę euklidesową obliczoną na całej matrycy. Ale istnieją scenariusze, w których będziemy musieli obliczyć normy na określonej osi. Numpy pozwala również na użycie osi parametru do określenia osi wzdłuż której można obliczyć norię dla macierzy. Za pomocą osi parametru można przekazać oś nad którą należy obliczyć normę. Oś 0 jest pierwszym wymiarem. Kontynuując poprzedni przykład, jeśli określamy oś = 0, norma zostanie obliczona na rzędach i określając osi = 1 oblicza normę w kolumnach.

>>> a
tablica ([[-4., -3., -2.],
[-1., 0., 1.],
[2., 3., 4.]])
>>> np.Linalg.norma (a, oś = 0)
tablica ([4.58257569, 4.24264069, 4.58257569])
>>> np.Linalg.Norm (a, oś = 1)
tablica ([5.38516481, 1.41421356, 5.38516481])

Jeśli jest to macierz wielowymiarowa, krotek liczb całkowitych, który określa osi, którą należy obliczyć normę, może być przekazywana do parametru osi.

>>> a = np.Linspace (1, 8, 8).przekształcenie (2, 2, 2)
>>> a
tablica [[[1., 2.],
[3., 4.]],
[[5., 6.],
[7., 8.]]])
>>> np.Linalg.norma (a, oś = (1, 2))
tablica ([5.47722558, 13.19090596])
>>> a [0 ,: ,:]
tablica [[[1., 2.],
[3., 4.]])
>>> np.Linalg.norma ([0,: ,:])
5.477225575051661
>>> a [1 ,: ,:]
tablica [[[5., 6.],
[7., 8.]])
>>> np.Linalg.Norm (A [1,: ,:])
13.19090595827292

W powyższym przykładzie, gdy określiliśmy oś = (1,2) Norma jest obliczana na osi 1 i 2 dla każdej podmieszczenia w osi 0.