Python 数据分析与科学计算 第10章 Scipy科学计算.ppt
********************************【例10.12】多项式拟合。importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(-5,5,100)y=4*x+15#待拟合函数y_noise=y+np.random.randn(100)*2coeff=np.polyfit(x,y_noise,1)plt.plot(x,y_noise,*r,x,coeff[0]*x+coeff[1])10.2 Scipy中的优化2.数据拟合拟合结果如图10.7所示。10.2 Scipy中的优化2.数据拟合(2)曲线拟合曲线拟合可分为没有约束的曲线拟合和带有约束条件的曲线拟合。Scipy的optimize模块中提供了curve_fit()函数来拟合没有约束条件的曲线,least_squares()函数用来拟合带有约束条件的曲线。【例10.13】曲线拟合。importnumpyasnpfromscipy.optimizeimportcurve_fitimportmatplotlib.pyplotaspltnp.random.seed(10)deffun(x):measurement_error=np.random.randn(len(x))y=5*x**2+measurement_errorreturnydefobjective_fun(x,a):returna*x**210.2 Scipy中的优化x=np.arange(0,10,1)*0.2y=fun(x)pout,m=curve_fit(objective_fun,x,y)a=poutplt.scatter(x,y,label=data)plt.plot(x,objective_fun(x,a),--,color=r,label=objectivequadraticfunction)plt.legend()plt.show()【例10.13】曲线拟合。10.2 Scipy中的优化曲线拟合结果
10.3 Scipy中的稀疏矩阵处理在矩阵中,若数据为零的元素数目远远多于非零元素的数目,并且非零元素分布没有规律时,则称该矩阵为稀疏矩阵。根据存储方式不同,可以将稀疏矩阵分成以下几类:bsr_matrix:分块存储,基于行coo_matrix:坐标形式存储(COO)csr_matrix:基于行的压缩存储(CSR)csc_matrix:基于列的压缩存储(CSC)dia_matrix:对角线存储dok_matrix:基于键值对的存储lil_matrix:基于行的链表存储【例10.14】使用coo_matrix创建稀疏矩阵。importscipy.sparseasspvalues=[3,2,1,0]rows=[0,1,2,3]cols=[1,3,2,0]A=sp.coo_matrix((values,(rows,cols)),shape=[4,4])A.toarrayprint(A)10.3 Scipy中的稀疏矩阵处理程序运行结果:(0,1) 3(1,3) 2(2,2) 1(3,0) 0【例10.15】存储稀疏矩阵。importnumpyasnpfromscipy.sparseimportcsr_matrixindptr=np.array([0,0,3,4,4,5])indices=np.array([0,2,3,2,3,])data=np.array([8,1,7,1,2])csr=csr_matrix((data,indices,indptr))csr.toarray()10.3 Scipy中的稀疏矩阵处理程序运行结果:array([[0,0,0,0],[8,0,1,7],[0,0,1,0],[0,0,0,0],[0,0,0,2]])【例10.16】使用data属性查看存储的数据(非零项)。importnumpyasnpfromscipy.sparseimportcsr_matrixarr=