numpy中的norm()函数求范数实例

 更新时间:2023年02月03日 15:23:39   作者:若水cjj  
这篇文章主要介绍了numpy中的norm()函数求范数实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

numpy norm()函数求范数

函数:

norm(x, ord = None, axis = None, keepdims = False)

ord表示求什么类型的范数

举例说明

import numpy as np

x = [1,2,3,4]
x1 = np.linalg.norm(x=x, ord=1)
x2 = np.linalg.norm(x=x, ord=2)
x3 = np.linalg.norm(x=x, ord=np.inf)
print(x1)
print(x2)
print(x3)

运行结果:

axis=0表示对矩阵的每一列求范数,axis=1表示对矩阵的每一行求范数, keeptdims=True表示结果保留二维特性,keepdims=False表示结果不保留二维特性

import numpy as np

x = np.array([[0, 1, 2],
              [3, 4, 5]])
x1 = np.linalg.norm(x=x, ord=1, axis=0, keepdims=True)
x2 = np.linalg.norm(x=x, ord=1, axis=1, keepdims=True)
x3 = np.linalg.norm(x=x, ord=1, axis=0, keepdims=False)
x4 = np.linalg.norm(x=x, ord=1, axis=1, keepdims=False)

print(x1)
print(x2)
print(x3)
print(x4)

运行结果:

numpy求解范数(numpy.linalg.norm)以及各阶范数详解

numpy.linalg.norm

语法

numpy.linalg.norm(x,ord=None,axis=None,keepdims=False)

Parameters

x: array_like

Input array. If axis is None, x must be 1-D or 2-D, unless ord is None. If both axis and ord are None, the 2-norm of x.ravel will be returned.

X是输入的array, array的情况必须是以下三种情况之一:

  • axis未指定,ord指定。此时x必须是一维或二维数组
  • axis指定,x任意
  • axis未指定,ord未指定,此时x任意,返回值为x被展平后的一维向量x.ravel的二范数。

ord:{non-zero int, inf, -inf, ‘fro’, ‘nuc’}, optional

Order of the norm (see table under Notes). inf means numpy’s inf object. The default is None.

范数的阶数,可以不指定。默认为None。inf代表无穷大,-inf为无穷小。

可选的阶数见下图:

ord

axis:{None, int, 2-tuple of ints},optional

If axis is an integer, it specifies the axis of x along which to compute the vector norms. If axis is a 2-tuple, it specifies the axes that hold 2-D matrices, and the matrix norms of these matrices are computed. If axis is None then either a vector norm (when x is 1-D) or a matrix norm (when x is 2-D) is returned. The default is None.

如果axis是整数,指定了一个维度,在该维度上按照向量进行范数计算。如果是一个二元整数组,指定了两个维度,在指定的这两个维度上可以构成矩阵。

对这些矩阵进行计算。如果没有指定axis,那么对于一维输入返回其向量形式的范数计算值,对于二维输入返回其矩阵形式的范数。默认值为None

keepdims: bool, optional

If this is set to True, the axes which are normed over are left in the result as dimensions with size one. With this option the result will broadcast correctly against the original x.

如果keepdims=True,被指定计算范数的维度将在返回结果中保留,其size为1。计算结果会在该维度上进行broadcast

各范数详析

NOTE: 对于ord<1的各个范数,结果在严格意义不等于数学意义上的范数。但在数值计算层面仍然有效。

ord

默认情况

当不指定ord时,即ord = None,对于矩阵,计算其Frobenius norm,对于向量,计算其2-norm

Frobenius范数

ord = 'fro'

其公式为:

Frobenius范数

F范数只对矩阵存在。其值为对所有元素的绝对值的平方求和后开平方。

Nuclear范数(核范数)

  • ord = 'nuc'
  • 只对矩阵存在,矩阵的核范数等于其所有奇异值的和。

无穷大范数

  • 对于矩阵:max(sum(abs(x), axis=1)) ,每一行最终得到一个数,返回最大的数。
  • 对于向量:max(abs(x)

无穷小范数

  • 对于矩阵: min(sum(abs(x),axis=1)),每一行得到一个数,返回最小的数。
  • 对于向量: min(abs(x))

0 范数

  • 对于矩阵:不存在
  • 对于向量:sum(x!=0) 所有非零元素的和

1 范数

  • 对于矩阵:max(sum(abs(x)),axis=0,每一列得到一个数,返回最大值。
  • 对于向量:sum(abs(x)**ord)**(1./ord)

-1 范数

  • 对于矩阵:min(sum(abs(x)),axis=0,每一列得到一个数,返回最小值。
  • 对于向量:sum(abs(x)**ord)**(1./ord)

2 范数

  • 对于矩阵:最大的奇异值
  • 对于向量:sum(abs(x)**ord)**(1./ord)

-2范数

  • 对于矩阵:最小的奇异值
  • 对于向量:sum(abs(x)**ord)**(1./ord)

其余int值对应的范数

  • 对于矩阵: Undefined
  • 对于向量:sum(abs(x)**ord)**(1./ord)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python中Pexpect的工作流程实例讲解

    python中Pexpect的工作流程实例讲解

    在本篇文章里小编给大家整理的是一篇关于python中Pexpect的工作流程实例讲解内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • Python实现输入若干个正整数,升序后输出

    Python实现输入若干个正整数,升序后输出

    这篇文章主要介绍了Python实现输入若干个正整数,升序后输出方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 浅析Django接口版本控制

    浅析Django接口版本控制

    一个项目在升级迭代的时候,不会立马抛弃旧的版本,甚至会出现多个版本共存同时维护的情况,因此需要版本控制
    2021-06-06
  • Python脚本导出为exe程序的方法

    Python脚本导出为exe程序的方法

    这篇文章主要介绍了如何把Python脚本导出为exe程序的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python入门:这篇文章带你直接学会python

    python入门:这篇文章带你直接学会python

    本教程并未涵盖Python语言的全部内容,只是一个入门的教程,Python有非常多的库以及很多的功能特点需要学习,小编只是抛砖引玉,希望大家可以从中受益
    2018-09-09
  • 通过数据库对Django进行删除字段和删除模型的操作

    通过数据库对Django进行删除字段和删除模型的操作

    这篇文章主要介绍了通过数据库对Django进行删除字段和删除模型的操作,这里假设我们已经建立了一个名为book的数据模型,需要的朋友可以参考下
    2015-07-07
  • 使用Python实现将Excel表格插入到Word文档中

    使用Python实现将Excel表格插入到Word文档中

    在日常办公场景中,通过Python脚本自动化整合Excel数据与Word文档,能够实现表格的智能迁移,满足不同场景下数据呈现的专业性要求,下面小编就来为大家介绍一下具体实现的三种方法吧
    2025-03-03
  • Python微信库:itchat的用法详解

    Python微信库:itchat的用法详解

    本篇文章主要介绍了Python微信库:itchat的用法详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Python Matplotlib绘制箱线图boxplot()函数详解

    Python Matplotlib绘制箱线图boxplot()函数详解

    箱线图一般用来展现数据的分布(如上下四分位值、中位数等),同时也可以用箱线图来反映数据的异常情况,下面这篇文章主要给大家介绍了关于Python Matplotlib绘制箱线图boxplot()函数的相关资料,需要的朋友可以参考下
    2022-07-07
  • Python基于百度AI实现抓取表情包

    Python基于百度AI实现抓取表情包

    本文先抓取网络上的表情图像,然后利用百度 AI 识别表情包上的说明文字,并利用表情文字重命名文件,感兴趣的小伙伴们可以参考一下
    2021-06-06

最新评论