python怎么用cos(python的math)
- 软件开发
- 2023-08-13
- 261
大家好,今天小编来为大家解答以下的问题,关于python怎么用cos,python的math这个很多人还不知道,现在让我们一起来看看吧!python cost用法Pyt...
大家好,今天小编来为大家解答以下的问题,关于python怎么用cos,python的math这个很多人还不知道,现在让我们一起来看看吧!
python cost用法
Pythoncos()函数
描述
cos()返回x的弧度的余弦值。
语法
以下是cos()方法的语法:
importmath
math.cos(x)
注意:cos()是不能直接访问的,需要导入math模块,然后通过math静态对象调用该方法。
参数
x--一个数值。
返回值
返回x的弧度的余弦值,-1到1之间。
实例
以下展示了使用cos()方法的实例:
#!/usr/bin/python
importmath
print"cos(3):",math.cos(3)
print"cos(-3):",math.cos(-3)
print"cos(0):",math.cos(0)
print"cos(math.pi):",math.cos(math.pi)
print"cos(2*math.pi):",math.cos(2*math.pi)
以上实例运行后输出结果为:
cos(3):-0.9899924966
cos(-3):-0.9899924966
cos(0):1.0
cos(math.pi):-1.0
cos(2*math.pi):1.0
sin平方x在python中怎么表示
在python中,有一个mathmodule,你可以importmath,里面有math.sin(),math.cos(),math.asin()和math.acos()四个函数.有了这四个函数你就可以求函数值和角度了.注意:括号里面填的数值,要用弧度制.
Python如何实现数据动态化
Python有些出色的数据可视化库,但很少能渲染GIF或视频动画。本文介绍如何运用MoviePy作为其他库的通用动画插件。
有了MoviePy,你可以用一个函数make_frame(t)自定义动画,并返回相应的时间t的视频帧(秒):
Python123456789101112frommoviepy.editorimportVideoClipdefmake_frame(t):"""returnsanimageoftheframeattimet"""#...createtheframewithanylibraryreturnframe_for_time_t#(HeightxWidthx3)Numpyarrayanimation=VideoClip(make_frame,duration=3)#3-secondclip#Fortheexport,manyoptions/formats/optimizationsaresupportedanimation.write_videofile("my_animation.mp4",fps=24)#exportasvideoanimation.write_gif("my_animation.gif",fps=24)#exportasGIF(slow)在之前的文章中,我用这种方法来做制作矢量图形动画(用Gizeh库),和光线追踪三维场景(由POV-Ray做出)。这篇文章包括MayaVi、vispy、matplotlib、NumPy和Scikit-image这些科学库。
用Mayavi的动画
Mayavi是一个针对有简单接口的交互3D数据可视化的Python模块。在第一个例子中,我们做一个高度随时间t变化的表面的动画:
Python12345678910111213141516171819202122importnumpyasnpimportmayavi.mlabasmlabimportmoviepy.editorasmpyduration=2#durationoftheanimationinseconds(itwillloop)#MAKEAFIGUREWITHMAYAVIfig_myv=mlab.figure(size=(220,220),bgcolor=(1,1,1))X,Y=np.linspace(-2,2,200),np.linspace(-2,2,200)XX,YY=np.meshgrid(X,Y)ZZ=lambdad:np.sinc(XX**2+YY**2)+np.sin(XX+d)#ANIMATETHEFIGUREWITHMOVIEPY,WRITEANANIMATEDGIFdefmake_frame(t):mlab.clf()#clearthefigure(toresetthecolors)mlab.mesh(YY,XX,ZZ(2*np.pi*t/duration),figure=fig_myv)returnmlab.screenshot(antialiased=True)animation=mpy.VideoClip(make_frame,duration=duration)animation.write_gif("sinc.gif",fps=20)另一个例子是一个坐标和观看角度都随时间变化的线框网:
Python12345678910111213141516171819202122232425262728importnumpyasnpimportmayavi.mlabasmlabimportmoviepy.editorasmpyduration=2#durationoftheanimationinseconds(itwillloop)#MAKEAFIGUREWITHMAYAVIfig=mlab.figure(size=(500,500),bgcolor=(1,1,1))u=np.linspace(0,2*np.pi,100)xx,yy,zz=np.cos(u),np.sin(3*u),np.sin(u)#Pointsl=mlab.plot3d(xx,yy,zz,representation="wireframe",tube_sides=5,line_width=.5,tube_radius=0.2,figure=fig)#ANIMATETHEFIGUREWITHMOVIEPY,WRITEANANIMATEDGIFdefmake_frame(t):"""Generatesandreturnstheframefortimet."""y=np.sin(3*u)*(0.2+0.5*np.cos(2*np.pi*t/duration))l.mlab_source.set(y=y)#changey-coordinatesofthemeshmlab.view(azimuth=360*t/duration,distance=9)#cameraanglereturnmlab.screenshot(antialiased=True)#returnaRGBimageanimation=mpy.VideoClip(make_frame,duration=duration).resize(0.5)#Videogenerationtakes10seconds,GIFgenerationtakes25sanimation.write_videofile("wireframe.mp4",fps=20)animation.write_gif("wireframe.gif",fps=20)因为Mayavi有着强大的ITK可视化引擎,它还可以处理复杂数据集。这里有一个源自于Mayavi例子的动画
代码
AnimationswithVispy用Vispy的动画
Vispy是另一个以OpenGL为基础的交互3D可视化库。至于Mayavi,我们用MoviePy先做出一个图和一个网。
Python12345678910111213141516171819202122232425262728frommoviepy.editorimportVideoClipimportnumpyasnpfromvispyimportapp,scenefromvispy.gloo.utilimport_screenshotcanvas=scene.SceneCanvas(keys='interactive')view=canvas.central_widget.add_view()view.set_camera('turntable',mode='perspective',up='z',distance=2,azimuth=30.,elevation=65.)xx,yy=np.arange(-1,1,.02),np.arange(-1,1,.02)X,Y=np.meshgrid(xx,yy)R=np.sqrt(X**2+Y**2)Z=lambdat:0.1*np.sin(10*R-2*np.pi*t)surface=scene.visuals.SurfacePlot(x=xx-0.1,y=yy+0.2,z=Z(0),shading='smooth',color=(0.5,0.5,1,1))view.add(surface)canvas.show()#ANIMATEWITHMOVIEPYdefmake_frame(t):surface.set_data(z=Z(t))#Updatethemathematicalsurfacecanvas.on_draw(None)#UpdatetheimageonVispy'scanvasreturn_screenshot((0,0,canvas.size[0],canvas.size[1]))[:,:,:3]animation=VideoClip(make_frame,duration=1).resize(width=350)animation.write_gif('sinc_vispy.gif',fps=20,opt='OptimizePlus')还有一些更高级的例子(源自于Vispy库),它是用C代码片段中嵌入Python代码,微调了3D渲染的:
代码
代码
用Matplotlib的动画
2D/3D绘图库Matplotlib已经有了动画模块,但我发现moviepy可以做出更轻量级,质量更好的视频,却达到了两倍的速度(不知道为什么?在这里看到更多细节)。这里有个如何使用matplotlib和moviepy的例子:
Python123456789101112131415161718192021222324importmatplotlib.pyplotaspltimportnumpyasnpfrommoviepy.video.io.bindingsimportmplfig_to_npimageimportmoviepy.editorasmpy#DRAWAFIGUREWITHMATPLOTLIBduration=2fig_mpl,ax=plt.subplots(1,figsize=(5,3),facecolor='white')xx=np.linspace(-2,2,200)#thexvectorzz=lambdad:np.sinc(xx**2)+np.sin(xx+d)#the(changing)zvectorax.set_title("Elevationiny=0")ax.set_ylim(-1.5,2.5)line,=ax.plot(xx,zz(0),lw=3)#ANIMATEWITHMOVIEPY(UPDATETHECURVEFOREACHt).MAKEAGIF.defmake_frame_mpl(t):line.set_ydata(zz(2*np.pi*t/duration))#<=Updatethecurvereturnmplfig_to_npimage(fig_mpl)#RGBimageofthefigureanimation=mpy.VideoClip(make_frame_mpl,duration=duration)animation.write_gif("sinc_mpl.gif",fps=20)Matplotlib有很多漂亮的主题,而且和像Pandas或Scikit-Learn这些数字模块能很好配合。让我们看一个SVM分类器,以更好地明白训练点的数量增加时的地图。
Python1234567891011121314151617181920212223242526272829303132importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportsvm#sklearn=scikit-learnfromsklearn.datasetsimportmake_moonsfrommoviepy.editorimportVideoClipfrommoviepy.video.io.bindingsimportmplfig_to_npimageX,Y=make_moons(50,noise=0.1,random_state=2)#semi-randomdatafig,ax=plt.subplots(1,figsize=(4,4),facecolor=(1,1,1))fig.subplots_adjust(left=0,right=1,bottom=0)xx,yy=np.meshgrid(np.linspace(-2,3,500),np.linspace(-1,2,500))defmake_frame(t):ax.clear()ax.axis('off')ax.set_title("SVCclassification",fontsize=16)classifier=svm.SVC(gamma=2,C=1)#thevaryingweightsmakethepointsappearoneaftertheotherweights=np.minimum(1,np.maximum(0,t**2+10-np.arange(50)))classifier.fit(X,Y,sample_weight=weights)Z=classifier.decision_function(np.c_[xx.ravel(),yy.ravel()])Z=Z.reshape(xx.shape)ax.contourf(xx,yy,Z,cmap=plt.cm.bone,alpha=0.8,vmin=-2.5,vmax=2.5,levels=np.linspace(-2,2,20))ax.scatter(X[:,0],X[:,1],c=Y,s=50*weights,cmap=plt.cm.bone)returnmplfig_to_npimage(fig)animation=VideoClip(make_frame,duration=7)animation.write_gif("svm.gif",fps=15)简单明了,背景色代表分类器辨识黑点和白点属于哪里。在一开始没有真正的线索,但随着更多的点出钱,月牙形分布区域渐渐显现了。
用Numpy的动画
如果你正用着Numpy数组(Numpy是一个Python的中央数字库),你不需要任何外部绘图库,你可以直接将这些数组馈入MoviePy。
这通过模拟在法国的僵尸爆发(灵感来自MaxBerggren的博客,伯乐在线已有全文翻译:《用Python在地图上模拟疫情扩散》)。法国被仿作一个所有分散和感染的计算都完成的网格(NumPy数组)。每隔一段时间,一些NumPy操作变换网格为有效的RGB图像,并将其发送到Moviepy。
代码
把动画放到一起
什么比一个动画更好呢?两个动画!你可以利用MoviePy视频合成功能,来混合来自不同库的动画:
Python123456importmoviepy.editorasmpy#WeusetheGIFsgeneratedearliertoavoidrecomputingtheanimations.clip_mayavi=mpy.VideoFileClip("sinc.gif")clip_mpl=mpy.VideoFileClip("sinc_mpl.gif").resize(height=clip_mayavi.h)animation=mpy.clips_array([[clip_mpl,clip_mayavi]])animation.write_gif("sinc_plot.gif",fps=20)Orforsomethingmoreartistic:
Python12345678#Makethewhitecolortransparentinclip_mayaviclip_mayavi2=(clip_mayavi.fx(mpy.vfx.mask_color,[255,255,255]).set_opacity(.4)#wholeclipissemi-transparent.resize(height=0.85*clip_mpl.h).set_pos('center'))animation=mpy.CompositeVideoClip([clip_mpl,clip_mayavi2])animation.write_gif("sinc_plot2.gif",fps=20)也许有点太快了,但有时你必须给你的观众一些可以让他们议论的东西。
你也可以注解动画,当比较不同的过滤器或算法时,注解动画很实用。让我们看看四张由库scikit-image变换的图像:
Python1234567891011121314151617181920212223242526importmoviepy.editorasmpyimportskimage.exposureasske#rescaling,histogrameq.importskimage.filterasskf#gaussianblurclip=mpy.VideoFileClip("sinc.gif")gray=clip.fx(mpy.vfx.blackwhite).to_mask()defapply_effect(effect,title,**kw):"""Returnsaclipwiththeeffectappliedandatitle"""filtr=lambdaim:effect(im,**kw)new_clip=gray.fl_image(filtr).to_RGB()txt=(mpy.TextClip(title,font="Purisa-Bold",fontsize=15).set_position(("center","top")).set_duration(clip.duration))returnmpy.CompositeVideoClip([new_clip,txt])#Apply4differenteffectstotheoriginalanimationequalized=apply_effect(ske.equalize_hist,"Equalized")rescaled=apply_effect(ske.rescale_intensity,"Rescaled")adjusted=apply_effect(ske.adjust_log,"Adjusted")blurred=apply_effect(skf.gaussian_filter,"Blurred",sigma=4)#Puttheclipstogetherona2x2grid,andwritetoafile.finalclip=mpy.clips_array([[equalized,adjusted],[blurred,rescaled]])final_clip.write_gif("test2x2.gif",fps=20)如果我们把CompositeVideoClip和clips_array替代成concatenate_videoclips,我们得到标题效果式动画:
Python12345678910111213141516171819202122232425importmoviepy.editorasmpyimportskimage.exposureasskeimportskimage.filterasskfclip=mpy.VideoFileClip("sinc.gif")gray=clip.fx(mpy.vfx.blackwhite).to_mask()defapply_effect(effect,label,**kw):"""Returnsaclipwiththeeffectappliedandatoplabel"""filtr=lambdaim:effect(im,**kw)new_clip=gray.fl_image(filtr).to_RGB()txt=(mpy.TextClip(label,font="Amiri-Bold",fontsize=25,bg_color='white',size=new_clip.size).set_position(("center")).set_duration(1))returnmpy.concatenate_videoclips([txt,new_clip])equalized=apply_effect(ske.equalize_hist,"Equalized")rescaled=apply_effect(ske.rescale_intensity,"Rescaled")adjusted=apply_effect(ske.adjust_log,"Adjusted")blurred=apply_effect(skf.gaussian_filter,"Blurred",sigma=4)clips=[equalized,adjusted,blurred,rescaled]animation=mpy.concatenate_videoclips(clips)animation.write_gif("sinc_cat.gif",fps=15)最终,处理视频数据时,MoviePy会非常好用,因为这是它的首要任务。最后一个例子,我们通过视频帧阈值和白色像素计数,估计一个细菌种群大小。第三面板显示,人口规模呈指数增长的时间。
代码
一个库就可以做所有动画了?
我希望给了你足够的例子,来提升你的同事对你下次展示中的印象。总之要他的输出能被转换成Numpy数组,其他的库也能用MoviePy来做动画。
一些库有自己的动画模块,但是修复和维护很痛苦!感谢那些在不同背景下测试MoviePy的人们,它变得更稳定了(除非没人再报bug),而且可以适用于各种环境。MoviePy仍有很多要去做的,但如果作者开始依靠它来做视频和GIF渲染,像Pandas和scikit-Learn依赖matplotlib做绘制,那会很好。
为了本文的完整性,同时也为了更好地满足您的需要,我必须提到的ImageIO,这是另一个可以编写视频的Python库,它专注于提供一个非常简单的接口来读取或写入任何图像,视频或容积数据。比如你用imwrite()写图像,用mimwrite()写视频/GIF,用volwrite()写体积数据,或只是write()写流数据。
math函数怎么使用
1使用math函数需要掌握一定的数学知识和编程基础。2math函数是Python内置的数学函数库,包含了很多数学函数,如三角函数、指数函数、对数函数等,可以通过导入math模块来使用。3例如,想要得到一个数的平方根,可以使用math.sqrt(num),其中num为所要求平方根的数值。还可以使用math.sin()、math.cos()、math.exp()等函数进行数学计算。需要注意的是,使用math函数时需要遵循该函数的参数和返回值类型等规范,否则会出现错误。
知道cos值怎么求角度要求用编程
要求用编程求解cos值对应的角度,可以使用反三角函数来实现。在大多数编程语言中,都提供了反三角函数的库函数,如acos()。通过传入cos值作为参数,acos()函数将返回对应的角度值。需要注意的是,反三角函数的返回值通常是弧度制的角度,如果需要得到以度为单位的角度,可以将弧度值乘以180再除以π。例如,在Python中可以使用math库的acos()函数来求解cos值对应的角度,具体代码如下:
importmath
cos_value=0.5
angle=math.degrees(math.acos(cos_value))
print("Theanglecorrespondingtocosvalue0.5is:",angle)
这样就可以通过编程求解cos值对应的角度了。
为什么Python效率这么低,还这么火
决定Python“火”的原因有很多,而你所谓的Python运行效率低,这个问题不重要!
Python为什么火,三分因天时,七分被炒作Python诞生于1991年,属于90后,快到而立之年了。为啥突然就火了呢?因为大数据这个时代背景。
要玩大数据,统计知识第一,编程第二。也就是说,你数学很厉害,但是编程不厉害,这个时候你会怎么办?你希望要是有一种在科学计算方面很厉害,但很容易掌握的编程语言就好了。
而Python就具备这样的特点。Python语言简洁易读,从算术,到微积分,到线性代数,Python在科学计算方面相当给力。
因此,Python成了大数据的首选编程语言。
大数据是个好概念,Python容易学习,所以Python就成了培训机构可蹭的热点要玩转大数据,只会Python远远不够,更别说学Python高薪就业了。但大数据自带流量,所以想炒作它的人比比皆是。
首先企业要炒大数据概念,哪怕卖煎饼,也要跟大数据扯上关系。似乎还真能扯上关系,煎饼的口味基于大数据。如果你仔细想,它不是那么回事,但绝大部分人没有这闲工夫去仔细思考的。
企业炒作大数据概念,那培训机构一定会跟上。因为想去参加培训的人会觉得,企业都在谈大数据,那学大数据好找工作呀。如果你仔细想,它也不是那么回事。
不管是不是那么回事,Python是被炒作起来了,它不想火都难。
Python运行效率怎么样?这需要综合评估。评估一门语言,如果离开了目标和成本来判断好坏,那就是扯淡。比如去你家楼下买菜。走路去买,效率是最高的。但人走路的速度非常慢,比不上单车,更比不上代步车。所以,你不能说走路这么慢,为什么还有人走路。
人力的成本远比机器贵。一门语言学习陈本低,意味着企业对这么技能所花的钱,也相对较低。所以运行效率不重要。再说了,Python的运行效率低吗?
火的东西,可以蹭热点,但别把自己蹭进去了。
我是那我拍,欢迎评论,点赞和关注。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
本文链接:http://xinin56.com/ruanjian/381.html