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