【Numpy】一文向您详细介绍利用 np.linalg.norm() 求范数
【Numpy】一文向您详细介绍利用 np.linalg.norm() 求范数-LMLPHP


  

📚 一、引言

  在数值计算、数据分析和机器学习等领域中,范数(Norm)是一个非常重要的概念。它通常用来衡量一个向量或者矩阵的大小。在Python的Numpy库中,np.linalg.norm() 函数为我们提供了一个方便且强大的工具来计算范数。本文将从浅入深,通俗易懂地介绍如何使用 np.linalg.norm() 来计算不同类型的范数,并通过举一反三的方式,帮助大家更好地理解和应用范数的概念。

🚀 二、Numpy与np.linalg.norm()

  Numpy是Python中一个用于处理大量同类型多维数组(ndarray)的库,提供了大量的数学函数来操作这些数组。np.linalg.norm() 是Numpy线性代数模块中的一个函数,用于计算向量或矩阵的范数。

2.1 基本用法

  • 首先,我们需要导入Numpy库:

    import numpy as np
    
  • 然后,我们可以使用 np.linalg.norm() 来计算一个向量的范数。例如,计算一个一维数组(向量)的L2范数(欧几里得范数):

    v = np.array([1, 2, 3])
    l2_norm = np.linalg.norm(v)
    print(f"The L2 norm of v is: {l2_norm}")
    

2.2 范数的类型

  np.linalg.norm() 函数支持多种范数类型,通过 ord 参数来指定。常见的范数类型有:

  • L1范数(ord=1):向量元素绝对值的和
  • L2范数(ord=2,默认):向量的欧几里得长度(即勾股定理)
  • 无穷范数(ord=np.inf):向量元素绝对值的最大值
  • 负无穷范数(ord=-np.inf):向量元素绝对值的最小值
  • Frobenius范数(ord=‘fro’):矩阵元素的平方和的平方根(仅对矩阵有效)

2.3 示例

  • 代码示例

    # L1范数
    v = np.array([1, -2, 3])
    l1_norm = np.linalg.norm(v, ord=1)
    print(f"The L1 norm of v is: {l1_norm}")
    
    # 无穷范数
    l_inf_norm = np.linalg.norm(v, ord=np.inf)
    print(f"The infinity norm of v is: {l_inf_norm}")
    
    # 矩阵的Frobenius范数
    A = np.array([[1, 2], [3, 4]])
    fro_norm = np.linalg.norm(A, ord='fro')
    print(f"The Frobenius norm of A is: {fro_norm}")
    

💡 三、举一反三:范数的应用

  1. 机器学习中的特征缩放

  在机器学习中,我们经常需要对特征进行缩放,以使不同尺度的特征在模型中具有相同的权重。L2范数可以用于特征缩放,例如,我们可以将每个特征值除以其L2范数,从而实现特征的标准化。

  1. 向量相似度度量

  范数也可以用来度量向量之间的相似度。例如,两个向量之间的L2距离(即它们之差的L2范数)可以用来衡量它们的相似度。

🌈 四、总结与展望

  通过本文的介绍,我们详细了解了如何使用 np.linalg.norm() 函数来计算向量和矩阵的范数,并探讨了范数在机器学习、优化和几何等方面的应用。在未来的学习和实践中,我们可以继续探索范数的更多应用和扩展方法,以便更好地利用这一强大的数学工具来解决实际问题。

  最后,希望本文能够帮助大家更深入地理解范数的概念和应用,并激发大家对于数学和编程的热情和兴趣。在未来的学习和工作中,让我们一起努力,不断探索和发现更多的数学之美!🚀

05-01 14:09