1.2.4 理解数学公式与Numpy矩阵运算 – 其他 – 红黑联盟读书频道_IT技术图书在线阅读

其他杂项24字数 2360阅读7分52秒阅读模式

为了便于理解后续章节算法部分的讲解,本节将常用的矩阵数学公式和程序代码对应出来,读者可根据自己需求有选择的学习。因使用矢量编程的方法,矩阵的基本运算得到了较大的简化。

1.矩阵的初始化:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import numpy as np  # 导入numpy包
 
1.1创建一个3*5的全零矩阵和全1矩阵
 
myZero = np.zeros([3,5]) # 3*5的全零矩阵
print myZero
myOnes = np.ones([3,5]) # 3*5的全1矩阵
print myOnes
输出结果:
[[ 00000.]
 [ 00000.]
 [ 00000.]]
 [[ 11111.]
 [ 11111.]
 [ 11111.]]
 
1.2生成随机矩阵:
 
myRand = np.random.rand(3,4) # 34列的0~1之间的随机数矩阵
print myRand
输出结果:
[[ 0.79473503  0.4682515   0.53933591  0.94568244]
 [ 0.52199975  0.81190881  0.41920671  0.16756969]
 [ 0.57211218  0.53727222  0.83488426  0.30227915]]
 
1.3单位阵:
 
myEye = np.eye(3) # 3*3的单位阵
print myEye
输出结果:
[[ 100.]
 [ 010.]
 [ 001.]]

2.矩阵的元素运算:是指矩阵在元素级别的加、减、乘、除运算

from numpy import *  #导入numpy包

2.1元素相加和相减:条件,矩阵的行数和列数必须相同

数学公式:
 

?

1
2
3
4
5
6
7
8
9
10
11
myOnes = ones([3,3])  # 3*3的全1矩阵
myEye = eye(3)       # 3*3的单位阵
print myOnes+myEye  # 矩阵相加
print myOnes-myEye   # 矩阵相减
输出结果:
[[ 211.]
 [ 121.]
 [ 112.]]
[[ 011.]
 [ 101.]
 [ 110.]]

2.2矩阵数乘:一个数乘以一个矩阵

数学公式:
 

?

1
2
3
4
5
6
7
mymatrix = mat( [[1,2,3],[4,5,6],[7,8,9]])
a = 10
print a*mymatrix
输出结果:
[[10 20 30]
 [40 50 60]
 [70 80 90]]

2.3矩阵所有元素求和:

数学公式:

mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]] )
print sum(mymatrix)
输出结果:
45

2.4矩阵各元素的积:矩阵的点乘同维对应元素的相乘。当矩阵的维度不相同时,会根据一定的广播规则将维数扩充到一致的形式,

?

1
2
3
4
5
6
7
8
数学公式:(A.*B)ij = Aij* Bij
mymatrix = mat( [[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = 1.5*ones([3,3])
print multiply(mymatrix,mymatrix2)
输出结果:
[[  1.5   3.    4.5]
 6.    7.5   9. ]
 [ 10.5  12.   13.5]]

2.5 矩阵各元素的n次幂:n=2

数学公式:
 

?

1
2
3
4
5
6
mylist = mat( [[1,2,3],[4,5,6],[7,8,9]])
print power(mymatrix,2)
输出结果:
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]

4.矩阵的乘法:矩阵乘矩阵

数学公式:

 

?

1
2
3
4
5
6
7
8
9
from numpy import *
 
mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
mymatrix2 = mat([[1],[2],[3]])
print mymatrix*mymatrix2
输出结果:
[[14]
 [32]
 [50]]

5.矩阵的转置:

数学公式:
 

?

1
2
3
4
5
6
7
8
9
10
11
12
13
from numpy import *
 
mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
print mymatrix.T   # 矩阵的转置
mymatrix.transpose()  # 矩阵的转置
print mymatrix
输出结果:
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[[1 2 3]
 [4 5 6]
 [7 8 9]]

5. 矩阵的其他操作:行列数、切片、复制、比较

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from numpy import *
 
mymatrix = mat([[1,2,3],[4,5,6],[7,8,9]])
[m,n]=shape(mymatrix)   # 矩阵的行列数
print "矩阵的行数和列数:",m,n
 
myscl1 = mymatrix[0] # 按行切片
print "按行切片:",myscl1
 
myscl2 = mymatrix.T[0]  # 按列切片
print "按列切片:",myscl2
 
mycpmat = mymatrix.copy() # 矩阵的复制
print "复制矩阵:\n",mycpmat
 
#比较
print "矩阵元素的比较:\n",mymatrix < mymatrix.T
输出结果:
矩阵的行数和列数: 3 3
按行切片: [[1 2 3]]
按列切片: [[1 4 7]]
复制矩阵:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
矩阵元素的比较:
[[False  True  True]
 [False False  True]
 [False False False]]

 

 
  • 本文由 asdfasd 发表于 2025-02-1313:15:11
  • 转载请务必保留本文链接:http://wp.fangfa.me/other-note/1-2-4-%e7%90%86%e8%a7%a3%e6%95%b0%e5%ad%a6%e5%85%ac%e5%bc%8f%e4%b8%8enumpy%e7%9f%a9%e9%98%b5%e8%bf%90%e7%ae%97-%e5%85%b6%e4%bb%96-%e7%ba%a2%e9%bb%91%e8%81%94%e7%9b%9f%e8%af%bb%e4%b9%a6%e9%a2%91.html