1矩阵运算
L = np.arange(10)
# 矩阵所有元素扩大2倍
2*L
X = np.arange(1, 16).reshape((3, 5))
X + 1
X -1
X*2
X/2
X//2
X ** 2
X % 2
1/ X
np.abs(X)
np.sin(X)
np.exp(X)
np.power(3, x)
3**X
np.log(X)
np.log2(X)
np.log10(X)
2矩阵运算
A=np.arange(4).reshape(2,2)
B=np.full((2,2),10)
# 矩阵数值间的加减乘除
A + B
A-B
A*B
A/B
# 矩阵间的乘法
# A的第i行乘以B的第i列相加
A.dot(B)
# 矩阵转置,行列互换
A.T
3向量和矩阵的运算
A=np.arange(4).reshape(2,2)
v = np.array([1, 2])
# 向量加矩阵,向量与矩阵的每一行相加
v + A
# 将一维向量在行上堆叠成矩阵然后变为2*2的矩阵并与2*2的矩阵求和
# 效果与v + A相同
np.vstack([v] * A.shape[0]) + A
# 将一维向量在行上叠加两次,列上叠加一次,变为2*2的矩阵,并与一个2*2的矩阵求和
# 效果与v + A相同
np.tile(v, (2, 1)) + A
v * A
v.dot(A)
# 会自动将v这个1*2的向量转换为2*1的矩阵进行乘积
A.dot(v)
4矩阵的逆
逆矩阵与原矩阵相乘得到单位矩阵,对角线全为1,其他元素为0,只有方阵才有逆矩阵。
A=np.arange(4).reshape(2,2)
inva = np.linalg.inv(A)
X = np.arange(16).reshape((2, 8 ))
# 求伪逆矩阵
# 得到一个8*2的矩阵
PinvX = np.linalg.pinv(X)
# 得到一个2*2的方阵
X.dot(pinvX)
网友评论