第十四章数据分析
一、科学计算的numpy库
1.NumPy:是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,是高性能科学计算和数据分析的基础包。
2.NumPy提供了两种基本的对象:
(1)ndarray:是储存单一数据类型的多维数组。
(2)ufunc: 它是一种能够对数组进行处理的函数。
3.NumPy的官方文档:https://docs.scipy.org/doc/numpy/reference/4.NumPy安装:https://www.scipy.org/install.html下载,通常与scipy、matplotlib库一起使用。(1)Anaconda里面已经安装过NumPy。(2)原生的Python安装:pip install numpy
(3)在官网中下载相关版本安装 https://pypi.python.org/pypi/numpy
二、numpy数组的创建:
1.numpy数组的概念:
(1) numpy数组是一个多维数组对象,称为ndarray。
(2)numpy数组的维数称为秩;每一个线性的数组称为轴。
(3)numpy数组的下标从0开始。同一个numpy数组中所有元素的类型必须是相同的。
2.创建numpy数组:
(1)使用array()函数从常规的Python列表或元组创建数组。
3.数组属性:ndarray(数组)是存储单一数据类型的多维数组。
(1)ndim:返回 int。表示数组的维数
(2)shape:返回 tuple。表示数组的尺寸,对于 n 行 m 列的矩阵,形状为(n,m)
(3)size:返回 int。表示数组的元素总数,等于数组形状的乘积
(4)dtype:返回 data-type。描述数组中元素的类型
(5)itemsize:返回 int。表示数组的每个元素的大小(以字节为单位)。
4.数组创建:
numpy.array(object, dtype=None, copy=True, order=‘K’,subok=False, ndmin=0)
(1)object:接收array。表示想要创建的数组。无默认。
(2)dtype:接收data-type。表示数组所需的数据类型。如果未给定,则选择保存对象所需的最小类型。默认为None。
(3)ndmin:接收int。指定生成数组应该具有的最小维数。默认为None。
5.numpy数组的创建3中方法:
(1)通过传入可待跌对象创建,称为基本方法。
(2)使用Numpy内部功能函数,内部方法。(3)使用特殊的库函数,特殊方法。
三、创建数组对象:
1.使用list创建数据组ndarray:
2.重新设置数组的 shape 属性
3.使用 arange 函数创建数组
4.使用 linspace 函数创建数组
5.使用 logspace 函数创建等比数列
6.使用zeros函数创建数组
7.使用eye函数创建数组
8.使用diag函数创建数组
9.使用ones函数创建数组
10.数组数据类型:NumPy基本数据类型与其取值范围(只展示一部分)
11.数组数据类型转换
12. 查看数据类型:可以直接查看或者使用numpy.dtype函数查看。
13.使用array函数创建数组时,数组的数据类型默认是浮点型。
14.自定义数组数据,则可以预先指定数据类型
四、生成随机数
1.无约束条件下生成随机数
2.生成服从均匀分布的随机数
3.生成服从正态分布的随机数
4.生成给定上下范围的随机数,如创建一个最小值不低于 2、最大值不高于 10 的 2 行 5 列数组
5.random模块常用随机数生成函数
五、通过索引访问数组
1.一维数组的索引
2.多维数组的索引(使用整数和布尔值索引访问数据)
六、变换数组的形态
1.改变数组形状
2.使用ravel函数展平数组
3.使用flatten函数展平数组
4.组合数组
(1)使用hstack函数实现数组横向组合:np.hstack((arr1,arr2))
(2)使用vstack函数实现数组纵向组合:np.vstack((arr1,arr2))
(3)使用concatenate函数实现数组横向组合:np.concatenate((arr1,arr2),axis = 1))(4)使用concatenate函数实现数组纵向组合:np.concatenate((arr1,arr2),axis = 0))
5.切割数组
(1)使用hsplit函数实现数组横向分割: np.hsplit(arr1, 2)
(2)使用vsplit函数实现数组纵向分割: np.vsplit(arr, 2)
(3)使用split函数实现数组横向分割: np.split(arr, 2, axis=1)
(4)使用split函数实现数组纵向分割: np.split(arr, 2, axis=0)
七、ufunc函数:全称通用函数(universal function),是一种能够对数组中所有元素进行操作的函数。
1.四则运算:加(+)、减(-)、乘(*)、除(/)、幂(**)。数组间的四则运算表示对每个数组中的元素分别进行四则运算,所以形状必须相同。
2.比较运算:>、<、==、>=、<=、!=。比较运算返回的结果是一个布尔数组,每个元素为每个数组对应元素的比较结果。
3.逻辑运算:np.any函数表示逻辑“or”,np.all函数表示逻辑“and”。运算结果返回布尔值。4.ufunc函数的广播机制:指不同形状的数组之间执行算术运算的方式,需要遵循4个原则:
(1)所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。
(2)输出数组的shape是输入数组shape的各个轴上的最大值。
(3)如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。
(4)当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。5.ufunc函数的广播机制分为:一维数组的广播机制和二维数组的广播机制
八、读写文件:
1.NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式
(1)save函数是以二进制的格式保存数据。 np.save("…/tmp/save_arr",arr)
(2)load函数是从二进制的文件中读取数据。 np.load("…/tmp/save_arr.npy")
(3)savez函数可以将多个数组保存到一个文件中。 np.savez(’…/tmp/savez_arr’,arr1,arr2)
(4)存储时可以省略扩展名,但读取时不能省略扩展名。
2.读取文本格式的数据
(1)savetxt函数是将数组写到某种分隔符隔开的文本文件中:np.savetxt("…/tmp/arr.txt", arr, fmt="%d", delimiter=",")
(2)loadtxt函数执行的是把文件加载到一个二维数组中:np.loadtxt("…/tmp/arr.txt",delimiter=",")
(3)genfromtxt函数面向的是结构化数组和缺失数据:np.genfromtxt("…/tmp/arr.txt", delimiter = “,”)
3.直接排序
(1)sort函数是最常用的排序方法。 arr.sort()
(2)sort函数也可以指定一个axis参数,使得sort函数可以沿着指定轴对数据集进行排序。axis=1为沿横轴排序; axis=0为沿纵轴排序。
4.间接排序
(1)argsort函数返回值为重新排序值的下标。 arr.argsort()
(2)lexsort函数返回值是按照最后一个传入数据排序的。 np.lexsort((a,b,c))
5.常用的统计函数
九、matplotlib库:matplotlib是Python的2D&3D绘图库。
1.matplotlib通过pyplot模块提供了和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。
2.可以处理数学运算、绘制图表,或者在图像上绘制点、直线和曲线。
2020-12-05
最新推荐文章于 2024-03-25 17:59:39 发布