欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

NumPy 线性代数

程序员文章站 2022-07-12 14:51:05
...

章节


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.]]