均分函数 numpy.arange() 和 numpy.linspace()
numpy.arange([start, ]stop, [step, ])
该函数返回的是一个均匀分布的数组
step一般为整数
import numpy as np
>>> np.arange(5)
[0 1 2 3 4] # 是数组,不是list
>>> np.arange(2, 7)
[2 3 4 5 6]
>>> np.arange(3, 7, 2)
[3 5]
如果需要步长不为整数的情况,可以使用linspace。
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False)
>>> np.linspace(2.0, 3.0, num=5)
[ 2. 2.25 2.5 2.75 3. ]
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
[ 2. 2.2 2.4 2.6 2.8]
矩阵(matrix)或向量(vector)范数 numpy.linalg.norm()
默认是计算第二范式
from numpy import linalg as la
>>> 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]])
a是向量 b是矩阵
向量范数
1-范数:即向量元素绝对值之和
>>> LA.norm(a, 1)
20.0
2-范数:即向量元素绝对值的平方和再开方
>>> LA.norm(a)
7.745966692414834
>>> LA.norm(a, 2)
7.745966692414834
∞-范数:即所有向量元素绝对值中的最大值
>>> LA.norm(a, np.inf)
4.0
-∞-范数:即所有向量元素绝对值中的最小值
>>> LA.norm(a, -np.inf)
0.0
p-范数:即向量元素绝对值的p次方和的1/p次幂
>>> LA.norm(a, 3)
5.8480354764257312
矩阵范数
1-范数:列和范数,即所有矩阵列向量绝对值之和的最大值
>>> LA.norm(b, 1)
7.0
2-范数:谱范数,即A'A矩阵的最大特征值的开平方
>>> LA.norm(b, 2)
7.3484692283495345
∞-范数:行和范数,即所有矩阵行向量绝对值之和的最大值
>>> LA.norm(b, np.inf)
9.0
F-范数:Frobenius范数,即矩阵元素绝对值的平方和再开平方
>>> LA.norm(b)
7.745966692414834
>>> LA.norm(b, 'fro')
7.745966692414834