目录
1、检测第三库的安装
在anaconda有numpy库,但在python IDLE中却没有,这是因为平台不同,所以需要另外安装,详情如下。
1)安装numpy;在标准环境下,可使用 pip install numpy或者用anaconda集成开发平台(自带numpy和matplotlib库)
出现Sucessfully即为安装成功!
成功运行!
2、理解numpy库及ndarray对象
2.1 numpy特点:
1)提供对数组和矩阵进行快速运算的标准数学函数
2)提供很多矢量运算接口,比手动用循环实现速度要快得多
3)开放源代码,由许多共同维护开发。
2.2Numpy的数组对象-ndarray
Numpy 最重要的一个特点是其N维数组对象ndarray,它是用于存放同类型元素的多维数组,ndarray中的每个元素在内存中占有相同大小的区域。
Numpy是由C语言实现的,相比python本身的数据结构列表和元组,ndarray更节省内存,节约运行时间,且更方便使用。
2.2.1对象ndarray的常用方法
1)调用ndarray对象时需先导入Numpy模块
2)将传递的列表转化为数组对象,创建数组对象,并运行
np.arange(start,stop,step),步长可以是小数;np.empty(shape)创建指定形状空数组,数组元素为随机值
2.2.2ndarray对象的属性
arr.shape 代表数组形状,几行几列;arr.ndim 代表维度(一维,二维...);arr.size 元素个数;arr.dtype 存储元素的数据类型
2.3创建方法加举例
2.3.1根据序列类型创建方法:
np.array() 将传递的序列类型数据(列表,元组,ndarray...)转化为ndarray,返回一个新的ndarray对象
1)ndarray对象维度为一维
2)ndarray对象维度为二维
2.3.2创建等间隔数组:
np.arange(start,stop,step),[不包括stop],根据传递参数返回等间隔数据组成的ndarray,与range()方法类似,步长可以是小数
2.3.3创建等差数组:
np.linspace(start,stop,num),指定开始元素,结束元素以及元素个数,num默认50个
2.3.4创建等比数组:
np.logspace(start,stop,num),指定开始元素,结束元素以及元素个数,num默认50个(输出结果使用了科学计数法)
2.3.5创建0元素的数组:
数学元素都为0
举例的是维度为3,形状为5行5列的数组
2.3.6创建元素都为1的数组
2.3.7创建随机元素的空数组
举例:3行8列
3、ndarray对象的索引与切片
1.索引支持正向索引(从左到右,下标从0开始不断增大)和反向索引(从右到左,下标从-1开始不断减小),与序列的索引和切片操作类似。
2、切片操作可通过slice函数,设置start,stop,step参数进行,也可以通过冒号分隔切片参数start:stop:step进行。
3、多维数组的操作与一维类似,每维的索引切片直接用逗号分隔。
reshape()方法:用于将原数重新按照维度划分,结束后返回一个新数组,原本数组本身不发生改变。
resize()直接原地修改,覆盖原数组,不返回新数组。
1)
arr[0,3] 根据索引找到一维索引的行,编号为3的数,即第四列的元素,为3
arr[slice(2,3)] 寻找索引为2的行,即为第3行,到第4行,不包括第四行,例子中无第3行,所以形状为0行5列。
2)用arange方法创建数组对象。对arr对象进行切片。
3)同时对第一维和第二位进行切片,索引从左到右从0开始,按照start,stop(取不到),step参数的设置,先行后列,取交集。
4、matplotlib数据可视化库的应用
4.1绘图类型:
1)线形图:plot() (2)直方图:hist() (3)条形图:bar() (4)饼图:pie() (5)散点图:scatter() (6)3D图:from mpl_toolkits.mplt3d import Axes3D (7)动态交互图:pyecharts
4.2绘图方式:
4.2.1 简单线形图:
1)先导入数据可视化库
2)plot()绘制线形图,当没有给定坐标范围时,自动生成范围,当线形图不止一条时,自动用不同颜色区分。
3)savefig()保存图,dpi为分辨率,默认为100
4.2.2绘制平行四边形
1、plt.plot([x1,x2,x3,x4,x1],[y1,y2,y3,y4,y1])
应用平行四边形性质计算好平行四边形四角的坐标,依次填入代表x轴的一组数据和代表y轴的二组数据,因为平行四边形封口,所以再添上起始位置平行四边形的顶点坐标,让线形图四角相连,四边形即可封口
2、添加坐标轴标签,plt.xlabel('xxxx')/plt.ylabel('xxxx')
自定义坐标范围 plt.axis([x1,x2,y1,y2])
plt.axis('off')隐藏坐标轴
1)有坐标轴
2)无坐标轴