Encontrar la norma de una matriz usando numpy

Encontrar la norma de una matriz usando numpy

En esta publicación, describo encontrar la norma de una matriz numpy. La norma de una matriz es una función que mapea la matriz a un número real no negativo. Para encontrar la norma de una matriz Numpy, usamos el Numpy Numpy.linalg.método de norma. El método toma una matriz o un objeto similar a una matriz (ex: listas de Python) como entrada y devuelve un flotador o una matriz de valores de norma.

Veamos un ejemplo.

$ python3
Python 3.8.5 (predeterminado, 8 de marzo 2021, 13:02:45)
[GCC 9.3.0] en Linux2
Escriba "Ayuda", "Copyright", "Créditos" o "Licencia" para obtener más información.
>>> importar numpy como np
>>> a = np.Linspace (-4, 4, 9)
>>> A
Array ([-4., -3., -2., -1., 0., 1., 2., 3., 4.])
>>> NP.linalg.norma (a)
7.745966692414834

La norma predeterminada calculada por Numpy es la norma L2 que también se conoce como la norma euclidiana. El orden de la norma se puede especificar utilizando el parámetro ORD suministrado a Numpy.linalg.norma. Continuando desde arriba,

>>> NP.linalg.norma (a, ord = 1)
20.0

La declaración anterior Norma calculada 1. La norma 1 es simplemente la suma de los valores absolutos de la matriz. En general, la norma de un vector para cualquier orden se calcula como:

(∑i | x | ord) 1/ord

Donde la suma se realiza sobre el valor absoluto de cada elemento de la matriz. Se puede calcular la norma infinita que omite NP.Inf como orden. Norm Infinity es el valor absoluto máximo de todos los elementos en la matriz.

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

Supongamos que tenemos una matriz para la cual se debe calcular la norma.

>>> a = np.Linspace (-4, 4, 9).remodelar (3, 3)
>>> A
Array ([[-4., -3., -2.],
[-1., 0., 1.],
[2., 3., 4.]])
>>> NP.linalg.norma (a)
7.745966692414834

Lo anterior devuelve la norma euclidiana calculada en toda la matriz. Pero hay escenarios en los que se nos exigirá que calculemos las normas en un eje particular. Numpy también permite usar un eje de parámetro para especificar un eje a lo largo del cual se puede calcular la norma para matrices. Usando el eje del parámetro, se puede pasar el eje a través del cual se debe calcular la norma. El eje 0 es la primera dimensión. Continuando con el ejemplo anterior, si especificamos axis = 0, la norma se calculará a través de las filas, y especificar Axis = 1 calcula la norma en las columnas.

>>> A
Array ([[-4., -3., -2.],
[-1., 0., 1.],
[2., 3., 4.]])
>>> NP.linalg.Norma (a, eje = 0)
matriz ([4.58257569, 4.24264069, 4.58257569])
>>> NP.linalg.Norma (a, eje = 1)
matriz ([5.38516481, 1.41421356, 5.38516481])

Si se trata de una matriz multidimensional, una tupla de enteros que especifica el eje a través del cual se debe calcular la norma se puede pasar al parámetro del eje.

>>> a = np.Linspace (1, 8, 8).remodelar (2, 2, 2)
>>> A
matriz ([[[1., 2.],
[3., 4.],
[[5., 6.],
[7., 8.]])
>>> NP.linalg.Norma (a, eje = (1, 2))
matriz ([5.477222558, 13.19090596])
>>> a [0 ,:,:]
matriz ([[1., 2.],
[3., 4.]])
>>> NP.linalg.Norma (a [0 ,:,:])
5.4772225575051661
>>> a [1,:,:]
matriz ([[5., 6.],
[7., 8.]])
>>> NP.linalg.Norma (a [1 ,:,:])
13.19090595827292

En el ejemplo anterior, cuando especificamos el eje = (1,2), la norma se calcula a través del eje 1 y 2 para cada subarray en el eje 0.