Python_numpy模块介绍

Python中,NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

使用前需导入numpy模块

1. 创建矩阵

 1 # 导入模块
 2 import numpy as np
 3 
 4 # 创建一维array对象
 5 a1 = np.array([1, 3, 2])   
 6         # 创建一个2 x 3 矩阵 , 输入参数实际为列表或元组,列表或元组内部元素为单个数值
 7 
 8 # 创建二维array对象
 9 a1 = np.array([1, 3, 2], [4, 3, 6])   
10         # 创建一个2 x 3 矩阵 , 输入参数实际为列表或元组,列表或元组内部元素又是列表或元组数值

2. 矩阵元素获取

 1 import numpy as np
 2 
 3 a1 = np.array([1, 3, 2])   
 4 a2 = np.array([[1, 3, 2], [4, 3, 6]])   
 5 
 6 # 获取矩阵的行数和列数
 7 size = a1.shape()  # 返回元组(1, 0)
 8 
 9 # 获取一维矩阵的第三个元素
10 b1 = a1[2]  
11 
12 
13 # 获取二维矩阵的第二行
14 b2 = a2[1]   或 b2 = a2[1, ]  或 b2 = a2[1, :] 
15 
16 # 获取二维矩阵的第二列
17 b3 = a2[:, 1]   # 注:返回值为行向量形式
18 
19 # 获取二维矩阵的第1,2行的第3,4两列
20 b4 = a2[0:2, 2:4]
21 
22 
23 # 获取二维矩阵的第二行第三个元素
24 b3 = a2[1, 2]

3. 按条件截取

按条件截取其实是在[](方括号)中传入自身的布尔语句.

 1 import numpy as np
 2  
 3 a3 = np.array([[1, 3, 2], [4, 3, 6], [7,5,3]])  
 4 
 5 
 6 c1 = a3 > 2  
 7 print(c1)
 8 
 9 # 返回布尔值矩阵
10 [[False  True False]
11  [ True  True  True]
12  [ True  True  True]]
13 
14 
15 
16 c2 = a3[a3 > 2]
17 print(c2)
18 
19 # 返回满足条件的一维列表
20 [3 4 3 6 7 5 3]

4. 矩阵合并

 1 import numpy as np
 2 
 3 a1 = np.array([[7, 5, 2], [4, 2, 5]])   
 4 a2 = np.array([[1, 3, 2], [4, 3, 6]])   
 5 
 6 # 按行合并
 7 h = np.hstack([a1, a2])  或 h = np.hstack((a1, a2)) 
 8 print(h)
 9 # 返回
10 [[7 5 2 1 3 2]
11  [4 2 5 4 3 6]]
12 
13 # 按列合并
14 v = np.vstack([a1, a2])  或 h = np.vstack((a1, a2)) 
15 print(v)
16 # 返回
17 [[7 5 2]
18  [4 2 5]
19  [1 3 2]
20  [4 3 6]]
21 
22 
23 # 矩阵合并也可用concatenate方法
24 np.concatenate( (a1,a2), axis=0 ) 等价于 np.vstack( (a1,a2) )
25 np.concatenate( (a1,a2), axis=1 ) 等价于 np.hstack( (a1,a2) )

5. 通过函数常见矩阵

 1 import numpy as np
 2 
 3 # 通过linspace方法创建等差数列,首位为2,末位为10,包含5个元素的等差数列
 4 a1 = np.linspace(2, 10, 5)    # 返回[  2.   4.   6.   8.  10.]
 5 
 6 # 通过logspace方法创建等比数列,首位为10^2, 末位为10^5, 包含4个元素的等比数列
 7 a2 = np.logspace(2, 5, 4)      # 返回[    100.    1000.   10000.  100000.]
 8 
 9 # 通过ones方法创建全1矩阵
10 a3 = np.ones(3,4)    # 创建3*4的全 1 矩阵
11 
12 # 通过zeros方法创建全0矩阵
13 a3 = np.zeros(3,4)    # 创建3*4的全 0 矩阵
14 
15 # 通过eye方法创建单位矩阵
16 a3 = np.eye(3,4)    # 创建3*4的单位矩阵
17 
18 # 通过fromstring方法将字符串转换成array对象,可以将字符批量转换成ASCII码
19 a = "abcdef"
20 b = np.fromstring(a,dtype=np.int8) # 因为一个字符为8为,所以指定dtype为np.int8
21 print(b) # 返回 [ 97  98  99 100 101 102]
22 
23 # 通过fromfunction方法根据行号和列号生成矩阵
24 def f1(i,j): 
25     return i+j
26 a = np.fromfunction(func,(5,6)) 
27 # 第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小
28 print(a)
29 # 返回
30 [[ 0.  1.  2.  3.  4.  5.]
31  [ 1.  2.  3.  4.  5.  6.]
32  [ 2.  3.  4.  5.  6.  7.]
33  [ 3.  4.  5.  6.  7.  8.]
34  [ 4.  5.  6.  7.  8.  9.]]

6. 矩阵运算

对每个元素的运算

矩阵函数说明
np.sin(a)对矩阵a中的每个元素取正弦, sin(x)
np.cos(a)对矩阵a中的每个元素取余弦, cos(x)
np.tan(a)对矩阵a中的每个元素取正切, tan(x)
np.arcsin(a)对矩阵a中的每个元素取反正弦, arsin(x)
np.arccos(a)对矩阵a中的每个元素取反余弦, arcos(x)
np.arctan(a)对矩阵a中的每个元素取反正切, artan(x)
np.sqrt(a)对矩阵a中的每个元素开方, sqrt(x)