6. 线性代数的相关计算

numpy模块可以解决各种线性代数相关的计算,只不过需要调用Numpy的子模块linalg,该模块几乎提供了线性代数所需的所有功能。

函数说明函数说明
np.zeros生成零矩阵np.eye生成单位矩阵
np.dot计算两个数组的点积np.diag矩阵主对角线与一维数组间的转换
np.linalg.det计算矩阵行列式np.linalg.eigvals计算方阵特征根
np.linalg.pinv计算方阵的Moore-Penrose伪逆np.linalg.lstsq计算Ax=b的最小二乘解
np.linalg.svd计算奇异值分解np.ones生成所有元素为1的矩阵
np.transpose矩阵转置np.inner计算两个数组的内积
np.trace矩阵主对角线元素的和np.linalg.eig计算矩阵特征根与特征向量
np.linalg.inv计算方阵的逆np.linalg.solve计算Ax=b的线性方程组的解
np.linalg.qr计算QR分解np.linalg.norm计算向量或矩阵的范数

矩阵乘法

#一维数组的点积
import numpy as np
vector_dot = np.dot(np.array([1,2,3]),np.array([4,5,6]))
print('一维数组的点积:\n',vector_dot)
#二维数组的乘法
arr1 = np.array([[1,2,3,4],[4,3,2,1],[9,4,5,3]])
arr2 = np.array([[3,2,4],[3,4,5],[3,5,1],[7,8,3]])
print('两个矩阵:\n')
print('arr1:\n',arr1)
print('arr2:\n',arr2)
arr2d = np.dot(arr1,arr2)
print('二维数组的乘法:\n',arr2d)


OUT:
一维数组的点积:
 32
两个矩阵:

arr1:
 [[1 2 3 4]
 [4 3 2 1]
 [9 4 5 3]]
arr2:
 [[3 2 4]
 [3 4 5]
 [3 5 1]
 [7 8 3]]
二维数组的乘法:
 [[46 57 29]
 [34 38 36]
 [75 83 70]]

点积函数dot,使用在两个一维数组中,实际上是计算两个向量的乘积,返回一个标量。使用在两个二维数组中,即矩阵的乘法,矩阵乘法要求第一个矩阵的列数要等于第二个矩阵的行数,否则会报错。
diag函数的使用

#diag函数的使用
import numpy as np
arr16 = np.arange(16).reshape(4,-1)
print('4*4的矩阵:\n',arr16)
print('取出矩阵的主对角线元素:\n',np.diag(arr16))
print('由一维数组构造的方阵:\n',np.diag(np.array([5,15,25])))

OUT:
4*4的矩阵:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
取出矩阵的主对角线元素:
 [ 0  5 10 15]
由一维数组构造的方阵:
 [[ 5  0  0]
 [ 0 15  0]
 [ 0  0 25]]

特征根与特征向量
A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的对应于特征值λ的特征向量。

#计算方阵的特征向量和特征根
import numpy as np
arr17 = np.array([[1,2,5],[3,6,8],[4,7,9]])
print('计算3*3方阵的特征根和特征向量:\n',arr17)
print('计算结果是:\n',np.linalg.eig(arr17))

OUT:
计算3*3方阵的特征根和特征向量:
 [[1 2 5]
 [3 6 8]
 [4 7 9]]
计算结果是:
 (array([16.75112093, -1.12317544,  0.37205451]), 
 array([[-0.30758888, -0.90292521,  0.76324346],
       [-0.62178217, -0.09138877, -0.62723398],
       [-0.72026108,  0.41996923,  0.15503853]]))

多元线性回归模型的解
多元线性回归一般用来预测连续的因变量,如根据天气状况预测游客数量、根据网站的活动页面预测支付转化率、根据城市人口的收入、教育水平、寿命等预测犯罪率等。该模型可以写成Y = Xβ+ε,其中Y是因变量,X是自变量,ε是误差项。要想根据已知的X来预测Y的话,必须得知道偏回归系数β的值。下面是偏回归系数β的计算公式:
在这里插入图片描述

#计算偏回归系数
import numpy as np
X = np.array([[1,1,4,3],[1,2,7,6],[1,2,6,6],[1,3,8,7],[1,2,5,8],[1,3,7,5],[1,6,10,12],[1,5,7,7],[1,6,3,4],[1,5,7,8]])
Y = np.array([3.2,3.8,3.7,4.3,4.4,5.2,6.7,4.8,4.2,5.1])
X_trans_X_inverse = np.linalg.inv(np.dot(np.transpose(X),X))
beta = np.dot(np.dot(X_trans_X_inverse,np.transpose(X)),Y)
print('偏回归系数:\n',beta)

OUT:
偏回归系数:
 [1.78052227 0.24720413 0.15841148 0.13339845]

多元一次方程组的求解

#多元一次方程组的求解
#ax + by + z = 34
import numpy as np
a = np.array([[3,2,1],[2,3,1],[1,2,3]])
b = np.array([39,34,26])
X = np.linalg.solve(a,b)
print('三元一次方程组的解:',X)

OUT:
三元一次方程组的解:[9.25 4.25 2.75]

范数的计算
范数常常用来度量某个向量空间(或矩阵)中的每个向量的长度或大小,它具有三方面的约束条件,分别是非负性、齐次性和三角不等性。

#范数的计算
import numpy as np
arr17 = np.array([1,3,5,7,9,10,-12])
# 一范数
resl = np.linalg.norm(arr17,ord = 1)
print('向量的一范数:',resl)
#二范数
res2 = np.linalg.norm(arr17,ord = 2)
print('向量的二范数:',res2)
#三范数
res3 = np.linalg.norm(arr17,ord = 3)
print('向量的三范数:',res3)

OUT:
向量的一范数: 47.0
向量的二范数: 20.223748416156685
向量的三范数: 15.811592197931878
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月辰星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值