经过不断的使用与进化,Python产生了不少专门用于机器学习的程序库,我们在机器学习中经常需要用到的一些程序库,包括科学计算包(Numpy)、数据分析工具(Pandas)、数值计算包(Scipy)、绘图工具库(Matplotlib)、机器学习包(Scikit-learn)等,涵盖了在机器学习中数据导入、整理、数据处理、可视化、数值计算以及算法运行等方面。 通过掌握以上基本的程序库的应用,可以极大简化对数据的处理过程。
科学计算包(Numpy)
Numpy的核心是数组(Arrays),具体来说是多维数组(Ndarrays);Numpy就是对这些数组进行创建、删除、运算等操作的一个程序包。
数组即一组数据,它把一系列具有相同类型的数据组织在一起,成为一个可操作的整体,但是两个数组内部的数据类型是不同的。
Numpy的一个特点是把数据转换成数组(向量或矩阵)形式处理或运算。
1、创建数组
np.array( ) 创建数组
np.arange( ) 创建等差数列
np.linspace( ) 创建指定范围内均匀分布的数组
np.ones( ) 创建元素都是1的数组
np.zeros( ) 创建元素都是0的数组
np.eye( ) 创建对角矩阵
np.random.random( ) 创建随机数组
2、查看数组的属性
.shape 数组的维度
.dtype 数组的数据类型
.size 数组的元素个数
3、数组索引
arr[3] 获取数组中某个元素
arr[3:5] 切片
4、数组的统计分析
np.sort() 函数 对数组进行排序
np.sum()函数 对数组进行求和
np.mean()函数 对数组求均值
np.std()函数 对数组求标准差
5、数组的矩阵操作
np.mat("1 3 4;5 7 9; 3 5 6") mat()函数创建矩阵
np.dot(arr,arr1) dot( )函数进行矩阵相乘
-
创建数组np.array
import numpy as np #导入Numpy库 array=np.array([1,2,3,4]) #创建一维数组 print(array) #打印数组 array2=np.array([[2,4,6,7],[3,9,7,0],[2,8,5,9]]) #创建二维数组 print(array2) #打印数组
[1 2 3 4] [[2 4 6 7] [3 9 7 0] [2 8 5 9]]
-
查看array数组的属性
print('数组维度为:',array2.shape) #查看数组结构 print('数组的数据类型为:',array2.dtype) #查看数组的数据类型 print('数组元素个数为:',array2.size) #查看数组元素个数
数组维度为: (3, 4) 数组的数据类型为: int32 数组元素个数为: 12
-
创建数组的其他方式
print(np.arange(8)) #np.arange()创建等差数列 print(np.linspace(0,6,4)) #np.linspace()指定范围内均匀分布的数组 print(np.zeros((2,3))) #np.zeros()元素都是0的数组,2x3的矩阵 print(np.ones((2,8))) #np.ones()元素都是1的数组,2x8的矩阵 print(np.eye(3)) #创建对角矩阵 print(np.random.random(8)) #创建元素数为8的随机数组
[0 1 2 3 4 5 6 7] [0. 2. 4. 6.] [[0. 0. 0.] [0. 0. 0.]] [[1. 1. 1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1. 1. 1.]] [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]] [0.88169518 0.48534047 0.03996798 0.86128575 0.58678112 0.48859591 0.5996858 0.7072107 ]
-
基础的数据运算
arr=np.array(np.arange(10)) #创建0-9之间的等差数据 arr1=np.array(np.arange(1,11)) #创建1-10之间的等差数据 print(arr*2) #数组乘法 print(arr+arr1) #数组加法
[ 0 2 4 6 8 10 12 14 16 18] [ 1 3 5 7 9 11 13 15 17 19]
-
数组索引
arr=np.arange(10) print(arr[6]) #获取数组中的第6个数 print(arr[2:5]) #获取某个范围的元素,第3、4、5个元素 arr[3:5]=111,112 #改变第4个元素为111,第5个元素为112 print(arr) arr1=np.array([[1,2,3,4],[1,4,5,6],[3,5,6,7]]) #创建多维数组 print(arr1) print(arr1[0,1:3])
6 [2 3 4] [ 0 1 2 111 112 5 6 7 8 9] [[1 2 3 4] [1 4 5 6] [3 5 6 7]] [2 3]
-
数组的统计分析
arr=np.array([2,5,6,8,3]) print(arr) print(np.sort(arr)) #sort()函数对数组进行排序 print(np.sum(arr)) #sum()函数对数组进行求和 print(np.mean(arr)) #mean()函数对数组求均值 print(np.std(arr)) #std()函数对数组求标准差
[2 5 6 8 3] [2 3 5 6 8] 24 4.8 2.1354156504062622
-
数组的矩阵操作
arr=np.arange(3) matr1=np.mat("1 4 5;3 5 6;3 7 9") #使用mat()函数创建矩阵 print(arr) print(matr1) print(np.dot(arr,matr1)) #使用dot()函数进行arr和matr1矩阵之间的相乘
[0 1 2] [[1 4 5] [3 5 6] [3 7 9]] [[ 9 19 24]]