Numpy linalg.norm – 矩阵或向量范数

矩阵归一化是指对矩阵元素进行缩放,使其值保持在 0 到 1 之间。根据矩阵的阶数,函数 linalg.norm() 返回七/八个不同的矩阵范数之一,或者在某些情况下返回许多无限矩阵范数之一,具体取决于矩阵阶数的值。

归一化有助于将巨大的数据值缩放到合理的数值范围,以便模型训练算法中较小的值不会被较大的值压倒。它有助于降低机器学习算法对特征规模的敏感度。归一化将矩阵的元素重新调整为特定的大小而不改变其方向。

另请阅读:Numpy linalg.eigvals – 计算一般矩阵的特征值

安装 Numpy

为了使用此功能,您需要在系统中安装 numpy(如果您尚未安装)。在命令提示符中运行以下代码来安装 numpy。确保在管理员模式下运行命令提示符以正确安装该软件包。

pip install numpy.

如果您在 python 项目中使用 anaconda 或spyder,则必须在管理员模式下在命令提示符中运行下面给出的代码:

conda install -c anaconda numpy

另请阅读:Numpy linalg.inv – 计算矩阵的(乘法)逆矩阵

Numpy linalg.norm() 函数的语法

numpy.linalg.norm(m, ord, axis)

参数为:

  • m:arraylike:这是要计算归一化的输入矩阵。
  • ord:int或none类型(可选):规范化的顺序。
  • axis:none 类型:返回向量或矩阵范数,如果它是整数值,则指定轴以及将计算矩阵 m 的向量范数。

该函数返回R: ,这是归一化矩阵或向量。

Numpy linalg.norm() 函数的一些示例

让我们看一下 numpy linalg.norm() 函数的几个示例。

示例 1:预定义矩阵的简单说明

第一个示例是预定义矩阵的简单说明,其范数可以计算如下:

#from numpy calling the function
import numpy as py
#pre defined matrix
m=[[4,2],[1,3]]
print("the initial matrix is=")
print(m) #displaying the matrix
print("The normalized result is=:")
#using the function
R=py.linalg.norm(m)
#displaying the result
print(R)

上述代码的输出将是:

the initial matrix is=
[[4, 2], [1, 3]]
The normalized result is=:
5.477225575051661
第一个示例的代码和输出。

第二个示例:取一个随机矩阵并将其标准化

在此示例中,我们将采用随机矩阵并使用 numpy.linalg.norm() 函数对其进行标准化。

#from numpy calling the function
import numpy as py
num=py.random.random() #generating random number using the function random
#creating the random matrix
m = py.array([[py.sin(num), -py.cos(num)], [py.cos(num), py.sin(num)]])
print("the initial matrix is=")
print(m) #displaying the matrix
#using the function
print("The normalized matrix is:")
R=py.linalg.norm(m)
#displaying the result
print(R)

上述代码的输出将是:

the initial matrix is=
[[ 0.27126711 -0.96250411]
 [ 0.96250411  0.27126711]]
The normalized matrix is:
1.4142135623730951
第二个示例的代码和输出

第三个示例:跨特定轴标准化矩阵

现在,让我们通过指定 axis 参数来规范化跨特定轴的矩阵。

#from numpy calling the function
import numpy as py
#predefined matrix
m = py.array([[3,5,7], [9,11,13], [15,17,19]])
print("the initial matrix is=")
print(m) #displaying the matrix
#using the function
print("The normalized matrix is:")
R=py.linalg.norm(m, axis=1)
#displaying the result
print(R)

上述代码的输出将是:

the initial matrix is=
[[ 3  5  7]
 [ 9 11 13]
 [15 17 19]]
The normalized matrix is:
[ 9.11043358 19.26136028 29.58039892]
第三个示例的代码和输出。

第四个示例:获取用户输入的矩阵和轴的值

最后但并非最不重要的一点是,让我们获取用户输入的矩阵值,然后提示用户定义用于标准化的轴。

#from numpy calling the function
import numpy as py
#taking user input
row = int(input("Enter the number of rows:"))
col= int(input("Enter the number of columns:"))
num=int(input("specify one axis accross which the matrix is to be normalized"))
   
# Initializing the required matrix
m = []
print("enter the values rowwise:")
   
# For user input
for i in range(row):          # loop for row entries
    b =[]
    for j in range(col):      # loop for column entries
         b.append(int(input()))
    m.append(b)
print("the initial matrix is=", m)
#normalizing
result= py.linalg.norm(m, axis=num)
 
#displaying the result
print("the normalized matrix is=",result)

上述代码的输出将是:

Enter the number of rows:3
Enter the number of columns:3
specify one axis accross which the matrix is to be normalized1
enter the values rowwise:
4
7
10
13
16
19
22
25
28
the initial matrix is= [[4, 7, 10], [13, 16, 19], [22, 25, 28]]
the normalized matrix is= [12.84523258 28.03569154 43.50861984]
第四个示例的代码和输出。

概括

numpy 包有许多非常有用和高效的函数,可用于科学计算,否则可能会很乏味且冗长。要了解有关 numpy 及其各种功能和特性的更多信息,请访问官方网站