用numpy模块求矩阵的相关问题
矩阵是机器学习中常见类型,熟练掌握矩阵在python中的实现至关重要
一、矩阵的行列数
求矩阵的行列数,用shape方法,返回tuple类型,0位代表行数,1位代表列数
import numpy as np
#设定一个2*4的矩阵
a = np.array([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,0]])
print(a)
#求矩阵的行列数,用shape方法,返回tuple类型,0位代表行数,1位代表列数
print(np.shape(a))
[[1 2 3 4]
[3 4 5 6]
[5 6 7 8]
[7 8 9 0]]
(4, 4)
二、矩阵的转置
求矩阵的转置, 用.T , 返回array类型,但不改变原变量属性
print(a.T)
print(a)
[[1 3 5 7]
[2 4 6 8]
[3 5 7 9]
[4 6 8 0]]
[[1 2 3 4]
[3 4 5 6]
[5 6 7 8]
[7 8 9 0]]
三、矩阵的逆
求矩阵的逆,用np.linalg.inv(),返回array类型,但不改变原变量属性
print(np.linalg.inv(a))
print(a)
[[-5.25419957e+15 1.05083991e+16 -5.25419957e+15 -4.29687500e-01]
[ 1.05083991e+16 -2.10167983e+16 1.05083991e+16 7.59375000e-01]
[-5.25419957e+15 1.05083991e+16 -5.25419957e+15 -2.29687500e-01]
[-5.83333333e-01 1.06666667e+00 -3.83333333e-01 -1.00000000e-01]]
[[1 2 3 4]
[3 4 5 6]
[5 6 7 8]
[7 8 9 0]]
四、矩阵的点乘
求矩阵的点乘,用np.dot(<Variable1,Variable2>),返回array类型,但不改变原变量属性
print(np.dot(a,a.T))
print(a)
[[ 30 50 70 50]
[ 50 86 122 98]
[ 70 122 174 146]
[ 50 98 146 194]]
[[1 2 3 4]
[3 4 5 6]
[5 6 7 8]
[7 8 9 0]]
五、协方差矩阵
求协方差矩阵,用np.cov(<二维array类型>,< rowvar=true/false>),
若rowvar为true,每一行代表一个变量;若rowvar为false,每一列代表一个变量
返回array类型,但不改变原变量属性
print(np.cov(a,rowvar = False))
print(a)
[[ 6.66666667 6.66666667 6.66666667 -3.33333333]
[ 6.66666667 6.66666667 6.66666667 -3.33333333]
[ 6.66666667 6.66666667 6.66666667 -3.33333333]
[-3.33333333 -3.33333333 -3.33333333 11.66666667]]
[[1 2 3 4]
[3 4 5 6]
[5 6 7 8]
[7 8 9 0]]
六、矩阵对角元素和
求矩阵对角元素和,用np.trace(<二维array类型>),
返回int类型,但不改变原变量属性
print(np.trace(a))
12
七、矩阵行列式
求矩阵行列式,用np.linalg.det(<二维array类型>),
返回float类型,但不改变原变量属性
print(np.linalg.det(a))
-1.776356839400248e-14
八、“方阵”的特征值和特征向量
求“方阵”的特征值和特征向量,用np.linalg.det(<二维array类型方阵>),
返回float类型,但不改变原变量属性
import numpy as np
a = np.array([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,0]])
eig_value, eig_vector = np.linalg.eig(a)
i = 1
for va, vec in zip(eig_value, eig_vector):
print(("a的第{}个特征值是 {},该特征值对应的特征向量是{}").format(i,va,vec))
i +=1
结果如下
a的第1个特征值是 20.210472052039158,该特征值对应的特征向量是[ 0.26376584 0.25204411 -0.75343025 0.40824829]
a的第2个特征值是 -7.409089365310404,该特征值对应的特征向量是[ 0.45358594 0.27091696 -0.05434769 -0.81649658]
a的第3个特征值是 -0.8013826867287482,该特征值对应的特征向量是[0.64340604 0.28978981 0.64473486 0.40824829]
a的第4个特征值是 4.469799535125549e-16,该特征值对应的特征向量是[ 5.57419085e-01 -8.82666205e-01 -1.17073249e-01 2.12838718e-16]
总结
矩阵的点乘,转置,逆,协方差矩阵,行列数,行列式,对角元素和以及求方阵的特征值和特征向量都离不开numpy模块,numpy在python中的应用可以大幅提高高维数据在python中的运算速度。如果我的分享对你有帮助,请点个赞鼓励一下。