为了便于理解后续章节算法部分的讲解,本节将常用的矩阵数学公式和程序代码对应出来,读者可根据自己需求有选择的学习。因使用矢量的方法,矩阵的基本运算得到了较大的简化。
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 myZeromyOnes = np.ones([3,5]) # 3*5的全1矩阵print myOnes输出结果:[[ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.] [ 0. 0. 0. 0. 0.]] [[ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.] [ 1. 1. 1. 1. 1.]]1.2生成随机矩阵:myRand = np.random.rand(3,4) # 3行4列的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输出结果:[[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.]] |
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 # 矩阵相减输出结果:[[ 2. 1. 1.] [ 1. 2. 1.] [ 1. 1. 2.]][[ 0. 1. 1.] [ 1. 0. 1.] [ 1. 1. 0.]] |
2.2矩阵数乘:一个数乘以一个矩阵
数学公式:
|
1
2
3
4
5
6
7
|
mymatrix = mat( [[1,2,3],[4,5,6],[7,8,9]])a = 10print 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* Bijmymatrix = 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,nmyscl1 = mymatrix[0] # 按行切片print "按行切片:",myscl1myscl2 = mymatrix.T[0] # 按列切片print "按列切片:",myscl2mycpmat = 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]] |

评论