1. exp()
math.exp()的参数必须是一个实数
numpy.exp()参数可以是一个向量
2. np.linalg.norm(求范数)
x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)
参数:
x:矩阵或向量
ord:范数类型,常用为1和2,也可以为负数
axis:处理方式
– axis=1表示按行向量处理,求多个行向量的范数
– axis=0表示按列向量处理,求多个列向量的范数
– axis=None表示矩阵范数
keepding:是否保持矩阵的二维特性
– True表示保持矩阵的二维特性,False相反
3. np.multiply()、np.dot()和星号(*)、outer()的区别
(1) np.multiply()函数
数组和矩阵对应位置相乘,输出与输入数组/矩阵的大小一致。
两个数组运算,结果为一个数组,两个矩阵运算,结果为一个矩阵。
数组:
A=array([[1, 2],
[3, 4]])
B=array([[0, 1],
[2, 3]])
np.multiply(A,B) =array([[ 0, 2],
[ 6, 12]])
矩阵:
np.multiply(np.mat(A),np.mat(B))=matrix([[ 0, 2],
[ 6, 12]])
(2) np.dot() –矩阵乘法
对于秩为1的数组,执行对应位置相乘,然后再相加,得一个实数;
对于秩不为1的二维数组,执行矩阵乘法运算;超过二维的可以参考numpy库介绍。
数组:
A=array([[1, 2],
[3, 4]])
B=array([[0, 1],
[2, 3]])
np.dot(A,B) =array([[ 4, 7],
[ 8, 15]])
矩阵:
np.dot(np.mat(A),np.mat(B))=matrix([[ 4, 7],
[ 8, 15]])
if x=[x1,x2,…,xn] then np.dot(x,x) = ∑ni=0x2i∑i=0nxi2 .
(3)星号(*)乘法运算
对数组执行对应位置相乘
对矩阵执行矩阵乘法运算
数组:
A=array([[1, 2],
[3, 4]])
B=array([[0, 1],
[2, 3]])
A*B = array([[ 0, 2],
[ 6, 12]])
矩阵:
(np.mat(A))*(np.mat(B))=matrix([[ 4, 7],
[ 8, 15]])
(4)outer()
计算两个向量的outer
Given two vectors, a = [a0, a1, ..., aM] and b = [b0, b1, ..., bN],
the outer product is:
[[a0*b0 a0*b1 ... a0*bN ]
[a1*b0 .
[ ... .
[aM*b0 aM*bN ]]
第一个参数表示倍数,使得第二个向量每次变为几倍
4. np.squeeze()
删掉为1的维度
A = np.array([[[0], [1], [2]]])
print(A.shape) #(1, 3, 1)
A = np.squeeze(A)
print(A.shape) #(3,)
5.
A trick when you want to flatten a matrix X of shape (a,b,c,d) to a matrix X_flatten of shape (b ∗ c ∗ d, a) is to use:
X_flatten = X.reshape(X.shape[0], -1).T # X.T is the transpose of X