Python科学计算与可视化

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) #填充两条水平线之间的区域

相关推荐