NumPy 线性代数

十年热恋 提交于 2019-11-27 12:24:08

章节


NumPy中包含了numpy.linalg模块,提供线性代数运算功能。下表描述了该模块中的一些重要功能。

SN 函数 描述
1 dot() 两个数组的点积
2 vdot() 两个向量的点积
3 inner() 两个数组的内积
4 matmul() 两个数组的矩阵乘积
5 det() 计算矩阵的行列式
6 solve() 解线性矩阵方程
7 inv() 求矩阵的乘法逆矩阵

numpy.dot()

numpy.dot()计算两个数组的点积。

示例

import numpy as np  
a = np.array([[100,200],[23,12]])  
b = np.array([[10,20],[12,21]]) 

dot = np.dot(a,b)  #[100 * 10 + 200 * 12, 100 * 20 + 200 * 21] [23*10+12*12, 23*20 + 12*21]
print(dot)  

输出

[[3400 6200]
 [ 374  712]]

numpy.vdot()

numpy.dot()计算两个向量的点积。

示例

import numpy as np  
a = np.array([[100,200],[23,12]])  
b = np.array([[10,20],[12,21]])  

vdot = np.vdot(a,b)  # 100 *10 + 200 * 20 + 23 * 12 + 12 * 21
print(vdot)  

输出

5528

numpy.inner()

numpy.inner()计算两个数组的内积。这个函数返回一维数组内部元素乘积的和。对于n维数组,它返回元素在最后一个轴上的乘积的和。

示例

import numpy as np  
a = np.array([1,2,3,4,5,6])  
b = np.array([23,23,12,2,1,2])  
inner = np.inner(a,b)  # 1*23 + 2*23 + 3*12 + 4*2 + 5*1 + 6*2
print(inner)  

输出

130

numpy.matmul()

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()

numpy.linalg.det()计算矩阵的行列式。

矩阵的行列式可以用对角元素来计算。下面是2×2矩阵的行列式

A B
C D

det()计算公式:AD - BC

示例

import numpy as np  
a = np.array([[1,2],[3,4]])  
print(np.linalg.det(a)) 

输出

-2.0000000000000004

numpy.linalg.solve()

numpy.linalg.solve()解线性矩阵方程。

这个函数用于解线性方程,学过线性代数可知,线性方程可以表示为矩阵。

如下面的方程:

x + y = 20
x - y = 10

可以表示为3个矩阵的方程:

矩阵a:
1   1
1   -1

矩阵b:
x
y

矩阵c:
20
10

方程式可以表示为:
a x b = c

示例

numpy.linalg.solve()解线性矩阵方程,得出x,y的值

import numpy as np  
a = np.array([[1,1],[1,-1]])  
c = np.array([[20], [10]])  
b = np.linalg.solve(a, c)

print(b)  

输出

[[15.]
 [ 5.]]
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!