---
title: linalg.norm
description: "矩阵或向量范数。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_1125.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_1125.html
indexId: d7035667f96aea21f222e2027e152da644dcdf95501df6ba47cfd80e050a17a961
---
# linalg.norm

#### 功能描述

矩阵或向量范数。

该函数能够返回八个不同的矩阵范数之一，或无限数量的向量范数之一（如表1所述），具体取决于参数ord的值。


**表1 参数ord对应的范数**

| ord | 矩阵范数 | 向量范数 |
| --- | --- | --- |
| None | Frobenius范数 | 2\-范数 |
| ‘fro’ | Frobenius范数 | \- |
| ‘nuc’ | 核范数 | \- |
| inf | max(sum(abs(x), axis=1)) | max(abs(x)) |
| \-inf | 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 | 2\-范数（奇异值的最大值） | sum(abs(x)\*\*ord)\*\*(1./ord) |
| \-2 | 奇异值的最小值 | sum(abs(x)\*\*ord)\*\*(1./ord) |
| 其他 | \- | sum(abs(x)\*\*ord)\*\*(1./ord) |


#### 必选输入参数

| 参数名 | 类型 | 说明 |
| --- | --- | --- |
| x | array\_like | 输入数组。 如果轴为None，x必须是1\-D或2\-D，除非ord为None。 如果轴和ord均为None，则将返回x.ravel的2范数。 |


#### 可选输入参数

| 参数名 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| ord | {non\-zero int, inf, \-inf, ‘fro’, ‘nuc’} | None | 请参见表1。 |
| axis | {None, int, 2\-tuple of ints} | None | 如果轴是一个整数，它指定了计算向量范数的x轴。 如果轴是2元组，它指定容纳二维矩阵的轴，并计算这些矩阵的矩阵范数。 如果轴为None，则返回向量范数（当x为1\-D时）或矩阵范数（当x为2\-D时）。 |
| keepdims | bool | False | 如果将其设置为True，则在结果中将作为尺寸为1的维度留在结果中。使用此选项，结果将正确地针对原始x广播。 |


#### 返回数据

| 类型 | 说明 |
| --- | --- |
| float or ndarray | 矩阵/向量范数。 |


#### 示例

```
>>> import numpy as np
>>> a = np.arange(9) - 4
>>> a
array([-4, -3, -2, -1,  0,  1,  2,  3,  4])
>>> b = a.reshape((3,3))
>>> b
array([[-4, -3, -2],
       [-1,  0,  1],
       [ 2,  3,  4]])
>>> 
>>> np.linalg.norm(a)
7.745966692414834
>>> np.linalg.norm(b)
7.745966692414834
>>> np.linalg.norm(b, 'fro')
7.745966692414834
>>> np.linalg.norm(a, np.inf)
4.0
>>> np.linalg.norm(b, np.inf)
9.0
>>> np.linalg.norm(a, -np.inf)
0.0
>>> np.linalg.norm(b, -np.inf)
2.0
>>> 
>>> np.linalg.norm(a, 1)
20.0
>>> np.linalg.norm(b, 1)
7.0
>>> np.linalg.norm(b, -1)
6.0
>>> np.linalg.norm(a, 2)
7.745966692414834
>>> np.linalg.norm(b, 2)
7.348469228349533
>>> np.linalg.norm(a, -2)
0.0
>>> np.linalg.norm(b, -2)
3.757577037301703e-16
>>> 
>>> c = np.array([[1,2,3], [-1,1,4]])
>>> np.linalg.norm(c, axis=0)
array([1.41421356, 2.23606798, 5.        ])
>>> np.linalg.norm(c, axis=1)
array([3.74165739, 4.24264069])
>>> np.linalg.norm(c, ord=1, axis=1)
array([6., 6.])
>>> 
>>> 
>>> m = np.arange(8).reshape(2,2,2)
>>> m
array([[[0, 1],
        [2, 3]],

       [[4, 5],
        [6, 7]]])
>>> np.linalg.norm(m, axis=(1,2))
array([ 3.74165739, 11.22497216])
>>> np.linalg.norm(m[0, :, :])
3.7416573867739413
>>> np.linalg.norm(m[1, :, :])
11.224972160321824
>>>
```
