赞
踩
Numpy中的 linalg 模块包含线性代数中的函数方法,用于求解矩阵的逆矩阵、求特征值、解线性方程组以及求行列式等,有了这个模块,在涉及到矩阵时,将极大的节约我们的时间和代码量。
下面对linalg模块中的函数进行一一讲解,因为相对简单,本文直接给出实际演示,若有不明白出可评论留言。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2019/3/1 17:31
# @Author : Arrow and Bullet
# @FileName: linalg.py
# @Software: PyCharm
# @Blog :https://blog.csdn.net/qq_41800366
from numpy import *
A = array([[1, 2], [4, 5]])
B = mat(A) # [[1 2][4 5]]
print(B)
C = linalg.inv(B)
print(C) # [[-1.66666667 0.66666667][ 1.33333333 -0.33333333]]
注:矩阵必须是方阵且可逆,否则会抛出LinAlgError异常。
from numpy import *
A = array([[1, 2], [4, 5]])
B = mat(A) # [[1 2][4 5]]
print(B)
C = linalg.det(B)
print(C) # -2.9999999999999996
linalg模块中,eigvals()函数可以计算矩阵的特征值,而eig()函数可以返回一个包含特征值和对应的特征向量的元组
from numpy import *
A = array([[1, 2], [4, 5]])
B = mat(A) # [[1 2][4 5]]
print(B)
C = linalg.eigvals(B)
print(C) # [-0.46410162 6.46410162]
D = linalg.eig(B)
print(D) # (array([-0.46410162, 6.46410162]), matrix([[-0.80689822, -0.34372377],[ 0.59069049, -0.9390708 ]]))
linalg中的函数solve()可以求解形如 Ax = b 的线性方程组,其中 A 为矩阵,b 为一维或二维的数组,x 是未知变量
from numpy import *
A = mat("1 -2 1;0 2 -8;-4 5 9")
B = array([0, 8, -9])
print(A) # [[ 1 -2 1][ 0 2 -8][-4 5 9]]
X = linalg.solve(A, B)
print(X) # [29. 16. 3.]
SVD(Singular Value Decomposition,奇异值分解)是一种因子分解运算,将一个矩阵分解为3个矩阵的乘积;
linalg模块中的svd()函数可以对矩阵进行奇异值分解,该函数返回3个矩阵——U、Sigma和V,其中U和V是正交矩阵,Sigma包含输入矩阵的奇异值。
from numpy import *
A = mat("1 -2 1;0 2 -8;-4 5 9")
U, Sigma, V = linalg.svd(A)
print(U)
# [[ 0.0154013 0.42284401 0.9060716 ]
# [-0.54920827 -0.75366444 0.36105427]
# [ 0.83554358 -0.50318272 0.22062201]]
print(Sigma) # [12.753856 5.77394316 0.02715914]
print(V)
# [[-0.26084449 0.23902565 0.93532181]
# [ 0.42182177 -0.84325917 0.33313716]
# [ 0.86834702 0.48143609 0.11913328]]
linalg模块中的 pinv()函数可进行求解广义逆矩阵;
#注:inv函数只接受方阵作为输入矩阵,而pinv函数则没有这个限制
from numpy import *
A = mat("1 -2 1;0 2 -8")
print(A) # [[ 1 -2 1][ 0 2 -8]]
B = linalg.pinv(A)
print(B) # [[ 0.25757576 0.04545455][-0.42424242 -0.04545455][-0.10606061 -0.13636364]]
希望能够帮助到大家,有什么问题可以 直接评论即可,喜欢有用的话可以点个赞让更多的人看到,如果不够详细的话也可以说,我会及时回复的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。