numpy.linalg.norm
作用是求向量的范数。下面介绍下他的主要参数。
axis
,就只能是1或2维python代码如下:
import numpy as np
x=np.array([[0, 3, 4], [2, 6, 4]])
# 按行求行向量二范数
# 向量的第二范数为传统意义上的向量长度
y=np.linalg.norm(x, axis=1, keepdims=True)
print("y=")
print(y)
# 求原矩阵的行向量的单位向量
z=x/y
print("z=")
print(z)
# 上式等价于 按行求向量的平方和 然后 开方
y2=np.sum(x**2, axis=1, keepdims=True)**0.5
print("y2=")
print(y2)
# 不保持维度不变
y3=np.sum(x**2, axis=1, keepdims=False)**0.5
print("y3=")
print(y3)
# 默认keepdims为False
y4=np.sum(x**2, axis=1)**0.5
print("y4=")
print(y4)
# 按列计算范数
y5=np.sum(x**2, axis=0, keepdims=False)**0.5
print("y5=")
print(y5)
# 一范数
y6=np.linalg.norm(x, ord = 1,axis=1, keepdims=True)
print("y6=")
print(y6)
# 正无穷范数
y6=np.linalg.norm(x, ord = np.inf,axis=1, keepdims=True)
print("y6=")
print(y6)
# 负无穷范数
y7=np.linalg.norm(x, ord = -np.inf,axis=1, keepdims=True)
print("y7=")
print(y7)
# 不配置axis,按矩阵求范数
y8=np.linalg.norm(x, ord = 1, keepdims=True)
print("y8=")
print(y8)
运行结果如下:
y=
[[5. ]
[7.48331477]]
z=
[[0. 0.6 0.8 ]
[0.26726124 0.80178373 0.53452248]]
y2=
[[5. ]
[7.48331477]]
y3=
[5. 7.48331477]
y4=
[5. 7.48331477]
y5=
[2. 6.70820393 5.65685425]
y6=
[[ 7.]
[12.]]
y6=
[[4.]
[6.]]
y7=
[[0.]
[2.]]
y8=
[[9.]]
numpy.linalg.norm
python 库 Numpy 中如何求取向量范数 np.linalg.norm