您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 第1讲 为何学Python
1pshcong@tongji.edu.cn为何学Python教师:丛培盛2TongjiUniversity回顾计算机问题求解专业问题用计算机求解,焦点在哪里?1.计算机是辅助工具2.用于快速验证我们的专业假设3.不希望从最底层开始写程序(最好少量代码即可问题)4.寻找符合条件3的语言、环境5.189646804563TongjiUniversity回顾计算机问题求解当遇到一个问题需要编程求解时,我们是怎么作的?1.查阅成熟的代码2.适当修改,让它符合问题求解的一个模块3.装配4.装配需要什么?汽车装配?高铁铁路的装配?课程定位4TongjiUniversity问题求解的步骤•掌握问题求解的一些数学过程•转化为计算机可求解的一些算法,查找这些算法•寻找合适的程序语言•去查润成熟的代码,理解,融入自己的求解过程如多元线性回归,一组Y变量,一组X变量,求回归系数cY=XCXtY=XtXC(XtX)-1XtY=(XtX)-1XtXC矩阵的运算:转置、相乘、求逆,都要自己还编写吗?5TongjiUniversity优点美国大学选用最多的语言6TongjiUniversity的优点直观:会话方式交互,学习者立即理解每个语句的意思,Python是最容易验证问题求解者想法的语言支持面向对象、结构化编程NASA使用它开发系统Yahoo!使用它管理讨论组Google用它实现Web爬虫和搜索引擎中的很多组件在游戏和生物信息学等领域中也得到广泛的应用各种Free类库,直接帮助我们实现计算7TongjiUniversity优点简单易学:几句话就可完成一个大任务跨平台:Windows、Linux、Android、Macintosh、Solaris、FreeBSD、OS/2完全开源、免费面向对象丰富的类库:文件、线程、数据库、WEB、CGI、FTP、电子邮件、XML、HTML出身:Python是类C的语言8TongjiUniversity强大的类库在类库的支持下,几句话即可完成大任务Numpy:矩阵运算类库,类似MatLabScipy:科学计算类库,提供各种已经实现的算法Matplotlib:图形制作库Pandas:大数据分析类库互联网类库,很容易建立网络通讯9TongjiUniversity看看Python的强大--numpyZ=np.mafromtxt(c:\\python33\data.txt)Data=Z.data2句话,完成数据文件读入矩阵Data中10TongjiUniversity看看Python的强大--numpy矩阵运算:设A和B为已知矩阵加法:C=A+B乘法:C=A.dot(B)转置:C=A.T逆:C=np.linalg.inv(A)11TongjiUniversity看看Python的强大--matplotlibimportnumpyasnpfrompylabimport*x=np.linspace(-np.pi,np.pi,100)sin,cos=np.sin(x),np.cos(x)plot(x,sin,color='blue',linewidth=2.0,linestyle='-')plot(x,cos,color='red',linewidth=2.0,linestyle='-.')show()12TongjiUniversity看看Python的强大--matplotlib……#引入相应类库delta=0.025x=np.arange(-3.0,3.0,delta)y=np.arange(-2.0,2.0,delta)X,Y=np.meshgrid(x,y)Z1=mlab.bivariate_normal(X,Y,1.0,1.0,0.0,0.0)Z2=mlab.bivariate_normal(X,Y,1.5,0.5,1,1)Z=10.0*(Z2-Z1)plt.figure()ax.plot_trisurf(X,Y,Z,cmap=cm.jet,linewidth=0.2)plt.show()13TongjiUniversity看看Python的强大--matplotlib……delta=0.025x=np.arange(-3.0,3.0,delta)y=np.arange(-2.0,2.0,delta)X,Y=np.meshgrid(x,y)Z1=mlab.bivariate_normal(X,Y,1.0,1.0,0.0,0.0)Z2=mlab.bivariate_normal(X,Y,1.5,0.5,1,1)Z=10.0*(Z2-Z1)plt.figure()CS=plt.contour(X,Y,Z,10)plt.clabel(CS,inline=1,fontsize=10)plt.title('Simplestdefaultwithlabels')plt.show()14TongjiUniversity看看Python的强大--scipy求最优:f(x)=x2-4*x+8fromscipy.optimizeimportfminimportnumpyasnpdeff(x):returnx**2-4*x+8print(fmin(f,0))运行结果:Optimizationterminatedsuccessfully.Currentfunctionvalue:4.000000Iterations:27Functionevaluations:54[2.]15TongjiUniversity看看Python的强大--scipy•信号处理16TongjiUniversity看看Python的强大--scipy•模式识别17TongjiUniversity看看Python的强大还有更多:SVD分解多元线性回归18TongjiUniversity建立WEB服务器如此简单fromthreadingimportThreadimporttimeimporthttp.serverimportsocketserverimportosport_number=8000server=NonedefstartServer(port):os.chdir(os.path.dirname(os.path.realpath(__file__)))Handler=http.server.SimpleHTTPRequestHandlerglobalserverserver=socketserver.TCPServer((,port),Handler)print(servingatport,port)server.serve_forever()defstart(port):thread=Thread(target=startServer,args=[port])thread.start()time.sleep(2)#Waittostarttheserverfirstdefstop():ifserver:server.shutdown()if__name__==__main__:start(port_number)19TongjiUniversity互联网—socket编程,网络上数据交换importsockets=socket.socket()host=socket.gethostname()print(host)port=1234s.bind((host,port))s.listen(3)str=ThanksforyourconnectingwhileTrue:c,add=s.accept()print(gotconnectionfrom:,add)f=open(rE:\teach\python\C-093843.txt,r,True)forlineinf:c.send(line.encode('ascii'))c.close()服务器importsockets=socket.socket()hostname=pshcong-PCs.connect((hostname,1234))whileTrue:str=s.recv(1024).decode('utf-8')if(str):str=str[:-1]print(str)else:break客户端20TongjiUniversity关于运算速度python是解释型语言解释型语言一般都比编译型计算速度慢解决python计算速度慢的方法是使用类库21TongjiUniversity运算速度的比较—直接的pythonloops=25000000#2500万次frommathimport*a=range(1,loops)deff(x):return3*log(x)+cos(x)**2%timeitr=[f(x)forxina]1loops,bestof3:22.6sperloop2500万次,需要22.6秒22TongjiUniversity运算速度的比较—使用np库importnumpyasnploops=25000000a=np.arange(1,loops)%timeitr=3*np.log(a)+np.cos(a)**21loops,bestof3:979msperloop使用np,ne类库,2500万次循环,979毫秒,快了23倍23TongjiUniversity运算速度的比较—使用数值表达式库importnumexprasneimportnumpyasnpne.set_num_threads(1)#使用一个线程Loops=25000000a=np.arange(1,loops)f='3*log(a)+cos(a)**2'%timeitr=ne.evaluate(f)1loops,bestof3:657msperloop使用np,ne类库,2500万次循环,657毫秒。24TongjiUniversity运算速度的比较—使用数值表达式库……ne.set_num_threads(4)1loops,bestof3:323msperloop使用ne,用4个线程,2500万次循环,323毫秒。最终,我们实现了从22.6秒到323ms的飞跃。提升69倍25TongjiUniversity—3句话完成股票分时线importpandas.io.dataaswebDAX=web.DataReader(name='^GDAXI',data_s
本文标题:第1讲 为何学Python
链接地址:https://www.777doc.com/doc-3793709 .html