numpy基础总结
numpy.linalg.norm
linalg.norm(x,ord=None,axis=None,keepdims=False)
其中x可以传入array,也可以是matrix。
ord参数针对x是array还是matrix是不一样的计算:
ord | norm for matrices | norm for vectors |
---|---|---|
None | Frobenius norm | 2-norm |
‘fro’ | Frobenius norm | – |
‘nuc’ | nuclear norm | – |
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)) | as below |
-1 | min(sum(abs(x), axis=0)) | as below |
2 | 2-norm (largest sing. value) | L2范数 |
-2 | smallest singular value | as below |
other | – | sum(abs(x)ord)(1./ord) |
如果传入axis这个参数,axis=0表示每一列为向量,以每一列的向量为基础计算。然后就转化为了向量运算。
其中keepdims如果是True,那么规范化的轴将作为尺寸1留在结果中,使用此选项,结果将针对原始 x 正确广播。
1 | a = np.arange(9) - 4 |
从以上结果看出:如果keepdims等于True,那么输出的矩阵将会是3乘以1的矩阵,输入矩阵是3乘以3。如果用Input/ norm(input)是不会报错的。