NumPy线性代数
函数名称 | 描述说明 |
|---|---|
dot | 两个数组的点积。 |
vdot | 两个向量的点积。 |
inner | 两个数组的内积。 |
matmul | 两个数组的矩阵积。 |
det | 计算输入矩阵的行列式。 |
solve | 求解线性矩阵方程。 |
inv | 计算矩阵的逆矩阵,逆矩阵与原始矩阵相乘,会得到单位矩阵。 |
numpy.dot()
按照矩阵的乘法规则,计算两个矩阵的点积运算结果。当输入一维数组时返回一个结果值,若输入的多维数组则同样返回一个多维数组结果。输入一维数组,示例如下:
import numpy as np
A=[1,2,3]
B=[4,5,6]
print(np.dot(A,B))
输出结果:
输入二维数组时,示例如下:32
import numpy as np
a = np.array([[100,200],
[23,12]])
b = np.array([[10,20],
[12,21]])
dot = np.dot(a,b)
print(dot)
输出结果:
[[3400 6200]
[ 374 712]]
对于上述输出结果,它的计算过程如下:
[[100*10+200*12,100*20+200*21]
[23*10+12*12,23*20+12*21]]
点积运算就是将 a 数组的每一行元素与 b 数组的每一列元素相乘再相加。
numpy.vdot()
该函数用于计算两个向量的点积结果,与 dot() 函数不同。输出结果:import numpy as np
a = np.array([[100,200],[23,12]])
b = np.array([[10,20],[12,21]])
vdot = np.vdot(a,b)
print(vdot)
5528
numpy.inner()
inner() 方法用于计算数组之间的内积。当计算的数组是一维数组时,它与 dot() 函数相同,若输入的是多维数组则两者存在不同,下面看一下具体的实例。
输出结果:import numpy as np
A=[[1 ,10],
[100,1000]]
B=[[1,2],
[3,4]]
#inner函数
print(np.inner(A,B))
#dot函数
print(np.dot(A,B))
[[ 21 43]
[2100 4300]]
[[ 31 42]
[3100 4200]]
inner() 函数的计算过程是 A 数组的每一行与 B 数组的每一行相乘再相加,如下所示:
dot() 则表示是 A 数组每一行与 B 数组的每一列相乘。[[1*1+2*10 1*3+10*4 ]
[100*1+1000*2 100*3+1000*4]]
numpy.matmul()
该函数返回两个矩阵的乘积,假如两个矩阵的维度不一致,就会产生错误。
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[23,23,12],[2,1,2],[7,8,9]])
mul = np.matmul(a,b)
print(mul)
输出结果:
[[ 48 49 43]
[144 145 112]
[240 241 181]]
numpy.linalg.det()
该函数使用对角线元素来计算矩阵的行列式,计算 2*2(两行两列) 的行列式,示例如下:
[[1,2],
[3,4]]
通过对角线元素求行列式的结果(口诀:“一撇一捺”计算法):
1*4-2*3=-2
我们可以使用 numpy.linalg.det() 函数来完成计算。示例如下:
输出结果:import numpy as np
a = np.array([[1,2],[3,4]])
print(np.linalg.det(a))
-2.0000000000000004
numpy.linalg.solve()
该函数用于求解线性矩阵方程组,并以矩阵的形式表示线性方程的解,如下所示:
3X + 2 Y + Z = 10
X + Y + Z = 6
X + 2Y - Z = 2
首先将上述方程式转换为矩阵的表达形式:
方程系数矩阵:
3 2 1
1 1 1
1 2 -1
方程变量矩阵:
X
Y
Z
方程结果矩阵:
10
6
2
如果用 m 、x、n 分别代表上述三个矩阵,其表示结果如下:
将系数矩阵与结果矩阵传递给 numpy.solve() 函数,即可求出线程方程的解,如下所示:m*x=n 或 x=n/m
输出结果:import numpy as np
m = np.array([[3,2,1],[1,1,1],[1,2,-1]])
print ('数组 m:')
print (m)
print ('矩阵 n:')
n = np.array([[10],[6],[2]])
print (n)
print ('计算:m^(-1)n:')
x = np.linalg.solve(m,n)
print (x)
x为线性方程的解:
[[1.]
[2.]
[3.]]
numpy.linalg.inv()
该函数用于计算矩阵的逆矩阵,逆矩阵与原矩阵相乘得到单位矩阵。示例如下:
import numpy as np
a = np.array([[1,2],[3,4]])
print("原数组:",a)
b = np.linalg.inv(a)
print("求逆:",b)
输出结果:
原数组:
[[1 2]
[3 4]]
求逆:
[[-2. 1. ]
[ 1.5 -0.5]]
- 随机文章
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 儿童教育文章(儿童教育)
- 光遇花手先祖位置(安卓光遇手花先祖)
- 广州4a广告公司(广州4a广告公司创意总监年薪)
- 抖音卡(抖音卡顿怎么解决)
- xboxones(xboxone手柄怎么配对主机)
- 兵马俑(兵马俑介绍和历史背景)
- 陈武简历
- 海猫鸣泣之时游戏(海猫鸣泣之时游戏在哪玩)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 儋州市第二中学(儋州市第二中学录取分数线)
- 鬼泣5攻略(鬼泣5攻略第三关怎么跳)
- 地球日主题(2020年世界地球日主题)
- 和柳亚子(和柳亚子先生于田)
- 冰客(冰客果汁)
- yy魔兽(yy魔兽世界)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 充值卡代理(充值卡代理加盟)
- 郭妮小说(恶魔的法则郭妮小说)
- 东天目山(东天目山景区)
- 蝙蝠给人类的一封信(蝙蝠给人类的一封信)
- 大松电饭煲(美的大松电饭煲)
- 疯狂填字(疯狂填字5)
- 点对点短信息(点对点短信息费是什么意思)
- 观音普门品(观音普门品念诵全文)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 杜星霖(杜星霖图片)
