numpy 和线性代数的关系

线性代数(如矩阵乘法、矩阵分解、行列式以及其他方阵数学等)是任何数组库的重要组成部分

numpy.linalg中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西。下面函数都在linalg中

函数 描述
diag() 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
dot() 矩阵乘法
trace() 计算对角线元素的和
det() 计算矩阵行列式
eig() 计算方阵的本征值和本征向量
inv() 计算方阵的逆
pinv() 计算矩阵的Moore-Penrose伪逆
qr() 计算QR分解
svd() 计算奇异值分解(SVD)
solve() 解线性方程组Ax=b,其中A为一个方阵
lstsq() 计算Ax=b的最小二乘解

点乘 dot 的用法

x = np.random.rand(3,4)
y = np.random.rand(4,3)   #x的列要等于y的行
x @ y        #一共有三种方法
np.dot(x,y)
x.dot(y)
array([[0.47105057, 1.44463688, 0.88234223],
       [0.72455672, 1.19400048, 0.66352837],
       [0.55268965, 1.22327881, 0.74436165]])

矩阵的逆

X = np.random.randn(5,5)
Y = np.linalg.inv(X)
X @ Y
  • 注意必须是方阵不然会报 the array must be square 的 错误
array([[ 1.00000000e+00,  2.77555756e-17, -1.11022302e-16,
        -4.16333634e-17,  1.11022302e-16],
       [-2.22044605e-16,  1.00000000e+00,  0.00000000e+00,
         4.16333634e-17,  6.66133815e-16],
       [ 0.00000000e+00, -5.55111512e-17,  1.00000000e+00,
         4.16333634e-17,  1.11022302e-16],
       [ 0.00000000e+00,  4.44089210e-16,  0.00000000e+00,
         1.00000000e+00,  2.22044605e-16],
       [-5.55111512e-17, -8.32667268e-17,  1.94289029e-16,
        -6.93889390e-17,  1.00000000e+00]])

猜你喜欢

转载自blog.csdn.net/weixin_44510615/article/details/87522308