举 2020-05-06
Numpy库
numpy 是用于处理含有同种元素的多维数组运算的第三方库,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,并可与C++/Fortran语言无缝结合。
数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray 类型的维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。一维数组的秩为1,二维数组的秩为2,二维数组相当于由两个一维数组构成。
numpy 库常用的创建数组函数
np.array([x,y,z],dtyp=int) #从Python列表和元组创造数组 np.arange(x,y,i) #创建一个由x到y,以i为步长的数组 np.linspace(x,y,n) #创建一个由x到y,等分成n个元素的数组 np.indices((m,n)) #创建一个m行n列的矩阵 np.random.rand(m,n) #创建一个m行n列的随机数组 np.ones((m,n),dtype) #创建一个m行n列全1的数组,dtype是数据类型 np.empty((m,n),dtype) #创建一个m行n列全0的数组,dtype是数据类型
ndarray 类的常用属性
ndarray.nidm #数组轴的个数,也被称作秩 ndarray.shape #数组在每个维度上大小的证书元组 ndarray.size #数组元素的总个数 ndarray.dtype #数组元素的数据类型,dtype类型可以用于创建数组中 ndarray.itemsize #数组中每个元素的字节大小 ndarray.data #包含实际数组元素的缓冲区地址 ndarray.flat #数组元素的迭代器
ndarray 类的形态操作方法
ndarray.reshape(n,m) #不改变数组ndarray,返回一个维度为(n,m)的数组 ndarray.resize(new_shape) #与reshape()作用相同,直接修改数组ndarray ndarray.swapaxes(ax1,ax2) #将数组n个维度中任意两个维度进行调换 ndarray.flatten() #对数组进行降维,返回一个折叠后的一维数组 ndarray.ravel() #作用同np.flatten(),但是返回数组的一个视图
ndarray 类的索引和切片方法
x[i] #索引第i个元素 x[-i] #从后向前索引第i个元素 x[n:m] #默认步长为1,从前往后索引,不包含m x[-m:-n] #默认步长为1,从后往前索引,结束位置为n x[n,m,i] #制定i步长的由n到m的索引
numpy 库的算术运算函数
np.add(x1,x2[,y]) #y = x1 + x2 np.subtract(x1,x2[,y]) #y = x1 - x2 np.multiply(x1,x2[,y]) #y = x1 * x2 np.divide(x1,x2[,y]) #y = x1 / x2 np.floor_divide(x1,x2,[,y]) #y = x1 // x2,返回值取整 np.negative(x,[,y]) #y = -x np.power(x1,x2[,y]) #y = x1**x2 np.remainder(x1,x2[,y]) #y = x1 % x2
numpy 库的比较运算函数
np.equal(x1,x2[,y]) #y = x1 == x2 np.not_equal(x1,x2[,y]) #y = x1 != x2 np.less(x1,x2[,y]) #y = x1 < x2 np.less_equal(x1,x2[,y]) #y = x1 <= x2 np.greater(x1,x2[,y]) #y = x1 > x2 np.greater_equal(x1,x2[,y]) #y=x1 >= x2 np.where(condition[x,y]) #根据给出的条件判断输出x还是y
numpy 库的其他运算函数
np.abs(x) #计算基于元素的整形,浮点或复数的绝对值 np.sqrt(x) #计算每个元素的平方根 np.squre(x) #计算每个元素的平方 np.sign(x) #计算每个元素的符号:1(+),0, -1(-) np.ceil(x) #计算大于或等于每个元素的最小值 np.floor(x) #计算小于或等于每个元素的最大值 np.rint(x,[,out]) #圆整,取每个元素为最近的整数,保留数据类型 np.exp(x[,out]) #计算每个元素指数值 np.log(x),np.log10(x),np.log2(x) #计算自然对数(e),基于10,2的对数,log(1+x)
Matplotlib库
matplotlib模块依赖于numpy模块和tkinter模块,可以绘制多种样式的图形,包括线图、直方图、饼状图、误差线图等等,图形质量可满足出版要求,是可视化的重要工具。
plt 子库提供了一批操作和绘图函数,每个函数代表对图像进行的一个操作,比如创建绘图区域、添加标注或者修改坐标轴等。
plt 库的绘图区域函数
plt.figure(figsize=None,facecolor=None) #创建一个全局绘图区域 plt.axes(rect.axisbg=‘w‘) #创建一个坐标系风格的子绘图区域 plt.sublpot(nrows,ncols,plot_number) #在全局绘图区域中创建一个子绘图区域 plt.subplot_adjust() #调整子图区域的布局
plt 库的读取和显示函数
plt.legend() #在绘图区域中方式绘图标签 plt.show() #显示创建的绘图对象 plt.matshow() #在窗口显示数组矩阵 plt.imshow() #在axes上显示图像 plt.imsave() #保存数组为图像文件 plt.imread() #从图像文件中读取数组
plt 库的基础图表函数
plt.polt(x,y,label,color,width) #根据x,y数组绘制直/曲线 plt.boxplot(data,notch,position) #绘制箱型图 plt.bar(left,height,width,bottom) #绘制条形图 plt.barh(bottom.width,height,left) #绘制横向条形图 plt.polar(theta,r) #绘制极坐标图 plt.pie(data,explode) #绘制饼图 plt.psd(x,NFFT=256,pad_to,Fs) #绘制功率谱密度图 plt.specgram(x,NFFT=256,pad_to,Fs) #绘制谱图 plt.cohere(x,y,NFFT=256,Fs) #绘制X-Y的相关性函数 plt.scatter() #绘制散点图 plt.step(x,y,where) #绘制步阶图 plt.hist(x,bins,normed) #绘制直方图 plt.contour(X,Y,Z,N) #绘制等值线 plt.vlines() #绘制垂直线 plt.stem(x,y,linefmt,markerfmt,basefmt) #绘制曲线每个店到水平轴线的垂线 plt.plot_date() #绘制数据日期 plt.plotfile() #绘制数据后写入文件
plt 库的坐标轴设置函数
plt.axis(‘v‘,‘off‘,‘equal‘,‘scaled‘,‘tight‘,‘image‘) #获取设置轴属性的快捷方法 plt.xlim(xmin,xmax) #设置当前x轴取值范围 plt.ylim(ymin,ymax) #设置当前y轴取值范围 plt.xscale() #设置x轴缩放 plt.yscale() #设置y轴缩放 plt.autoscale() #自动缩放轴视图的数据 plt.thetagrids(angles,labels,fmt,frac) #设置极坐标网格theta的位置 plt.grid(on/off) #打开或者关闭坐标网格
plt 库的标签设置函数
plt.figlegend(handles,label,loc) #为全局绘图区域放置图注 plt.legend() #为当前坐标图放置图注 plt.xlabel(s) #设置当前x轴的标签 plt.ylabel(s) #设置当前y轴的标签 plt.xticks(array,‘a‘,‘b‘,‘c‘) #设置当前x轴刻度位置的标签和值 plt.yticks(array,‘a‘,‘b‘,‘c‘) #设置当前y轴刻度位置的标签和值 plt.clabel(cs,v) #为等值线图设置标签 plt.get_figlabels #返回当前绘图区域的标签列表 plt.figtext(x,y,s,fontdic) #为全局绘图区域添加文字 plt.titile() #设置标题 plt.suptitle() #为当前绘图区域添加中心标题 plt.text(x,y,s,fontdic,withdash) #为坐标图轴添加注释 plt.annotate(note,xy,xytext,xycoords,textdcoords, arrowprops) #用箭头在制定数据点创建一个注释或一段文本
plt 库的区域填充函数
fill(x,y,c,color) #填充多边形 fill_between(x,y1,y2,where,color) #填充两条曲线围城的多边形 fill_between(y,x1,x2,where,hold) #填充两条水平线之间的区域
什么是数组数组是一种线性表数据结构,它用一组连续的内存空间来存储一组具有相同类型的数据。典型的线性表有数组、链表、队列和栈。直接将第 k 位的数据搬移到数组元素最后,然后把新的元素直接放在第 k 位。