python怎么用cos(python的math)
大家好,今天小編來為大家解答以下的問題,關(guān)于python怎么用cos,python的math這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!python cost用法Pyt...
大家好,今天小編來為大家解答以下的問題,關(guān)于python怎么用cos,python的math這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!
python cost用法
Pythoncos()函數(shù)
描述
cos()返回x的弧度的余弦值。
語法
以下是cos()方法的語法:
importmath
math.cos(x)
注意:cos()是不能直接訪問的,需要導(dǎo)入math模塊,然后通過math靜態(tài)對象調(diào)用該方法。
參數(shù)
x--一個數(shù)值。
返回值
返回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)
以上實例運行后輸出結(jié)果為:
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()四個函數(shù).有了這四個函數(shù)你就可以求函數(shù)值和角度了.注意:括號里面填的數(shù)值,要用弧度制.
Python如何實現(xiàn)數(shù)據(jù)動態(tài)化
Python有些出色的數(shù)據(jù)可視化庫,但很少能渲染GIF或視頻動畫。本文介紹如何運用MoviePy作為其他庫的通用動畫插件。
有了MoviePy,你可以用一個函數(shù)make_frame(t)自定義動畫,并返回相應(yīng)的時間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數(shù)據(jù)可視化的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)另一個例子是一個坐標和觀看角度都隨時間變化的線框網(wǎng):
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可視化引擎,它還可以處理復(fù)雜數(shù)據(jù)集。這里有一個源自于Mayavi例子的動畫
代碼
AnimationswithVispy用Vispy的動畫
Vispy是另一個以O(shè)penGL為基礎(chǔ)的交互3D可視化庫。至于Mayavi,我們用MoviePy先做出一個圖和一個網(wǎng)。
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代碼,微調(diào)了3D渲染的:
代碼
代碼
用Matplotlib的動畫
2D/3D繪圖庫Matplotlib已經(jīng)有了動畫模塊,但我發(fā)現(xiàn)moviepy可以做出更輕量級,質(zhì)量更好的視頻,卻達到了兩倍的速度(不知道為什么?在這里看到更多細節(jié))。這里有個如何使用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這些數(shù)字模塊能很好配合。讓我們看一個SVM分類器,以更好地明白訓(xùn)練點的數(shù)量增加時的地圖。
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)簡單明了,背景色代表分類器辨識黑點和白點屬于哪里。在一開始沒有真正的線索,但隨著更多的點出錢,月牙形分布區(qū)域漸漸顯現(xiàn)了。
用Numpy的動畫
如果你正用著Numpy數(shù)組(Numpy是一個Python的中央數(shù)字庫),你不需要任何外部繪圖庫,你可以直接將這些數(shù)組饋入MoviePy。
這通過模擬在法國的僵尸爆發(fā)(靈感來自MaxBerggren的博客,伯樂在線已有全文翻譯:《用Python在地圖上模擬疫情擴散》)。法國被仿作一個所有分散和感染的計算都完成的網(wǎng)格(NumPy數(shù)組)。每隔一段時間,一些NumPy操作變換網(wǎng)格為有效的RGB圖像,并將其發(fā)送到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)最終,處理視頻數(shù)據(jù)時,MoviePy會非常好用,因為這是它的首要任務(wù)。最后一個例子,我們通過視頻幀閾值和白色像素計數(shù),估計一個細菌種群大小。第三面板顯示,人口規(guī)模呈指數(shù)增長的時間。
代碼
一個庫就可以做所有動畫了?
我希望給了你足夠的例子,來提升你的同事對你下次展示中的印象??傊妮敵瞿鼙晦D(zhuǎn)換成Numpy數(shù)組,其他的庫也能用MoviePy來做動畫。
一些庫有自己的動畫模塊,但是修復(fù)和維護很痛苦!感謝那些在不同背景下測試MoviePy的人們,它變得更穩(wěn)定了(除非沒人再報bug),而且可以適用于各種環(huán)境。MoviePy仍有很多要去做的,但如果作者開始依靠它來做視頻和GIF渲染,像Pandas和scikit-Learn依賴matplotlib做繪制,那會很好。
為了本文的完整性,同時也為了更好地滿足您的需要,我必須提到的ImageIO,這是另一個可以編寫視頻的Python庫,它專注于提供一個非常簡單的接口來讀取或?qū)懭肴魏螆D像,視頻或容積數(shù)據(jù)。比如你用imwrite()寫圖像,用mimwrite()寫視頻/GIF,用volwrite()寫體積數(shù)據(jù),或只是write()寫流數(shù)據(jù)。
math函數(shù)怎么使用
1使用math函數(shù)需要掌握一定的數(shù)學知識和編程基礎(chǔ)。2math函數(shù)是Python內(nèi)置的數(shù)學函數(shù)庫,包含了很多數(shù)學函數(shù),如三角函數(shù)、指數(shù)函數(shù)、對數(shù)函數(shù)等,可以通過導(dǎo)入math模塊來使用。3例如,想要得到一個數(shù)的平方根,可以使用math.sqrt(num),其中num為所要求平方根的數(shù)值。還可以使用math.sin()、math.cos()、math.exp()等函數(shù)進行數(shù)學計算。需要注意的是,使用math函數(shù)時需要遵循該函數(shù)的參數(shù)和返回值類型等規(guī)范,否則會出現(xiàn)錯誤。
知道cos值怎么求角度要求用編程
要求用編程求解cos值對應(yīng)的角度,可以使用反三角函數(shù)來實現(xiàn)。在大多數(shù)編程語言中,都提供了反三角函數(shù)的庫函數(shù),如acos()。通過傳入cos值作為參數(shù),acos()函數(shù)將返回對應(yīng)的角度值。需要注意的是,反三角函數(shù)的返回值通常是弧度制的角度,如果需要得到以度為單位的角度,可以將弧度值乘以180再除以π。例如,在Python中可以使用math庫的acos()函數(shù)來求解cos值對應(yīng)的角度,具體代碼如下:
importmath
cos_value=0.5
angle=math.degrees(math.acos(cos_value))
print("Theanglecorrespondingtocosvalue0.5is:",angle)
這樣就可以通過編程求解cos值對應(yīng)的角度了。
為什么Python效率這么低,還這么火
決定Python“火”的原因有很多,而你所謂的Python運行效率低,這個問題不重要!
Python為什么火,三分因天時,七分被炒作Python誕生于1991年,屬于90后,快到而立之年了。為啥突然就火了呢?因為大數(shù)據(jù)這個時代背景。
要玩大數(shù)據(jù),統(tǒng)計知識第一,編程第二。也就是說,你數(shù)學很厲害,但是編程不厲害,這個時候你會怎么辦?你希望要是有一種在科學計算方面很厲害,但很容易掌握的編程語言就好了。
而Python就具備這樣的特點。Python語言簡潔易讀,從算術(shù),到微積分,到線性代數(shù),Python在科學計算方面相當給力。
因此,Python成了大數(shù)據(jù)的首選編程語言。
大數(shù)據(jù)是個好概念,Python容易學習,所以Python就成了培訓(xùn)機構(gòu)可蹭的熱點要玩轉(zhuǎn)大數(shù)據(jù),只會Python遠遠不夠,更別說學Python高薪就業(yè)了。但大數(shù)據(jù)自帶流量,所以想炒作它的人比比皆是。
首先企業(yè)要炒大數(shù)據(jù)概念,哪怕賣煎餅,也要跟大數(shù)據(jù)扯上關(guān)系。似乎還真能扯上關(guān)系,煎餅的口味基于大數(shù)據(jù)。如果你仔細想,它不是那么回事,但絕大部分人沒有這閑工夫去仔細思考的。
企業(yè)炒作大數(shù)據(jù)概念,那培訓(xùn)機構(gòu)一定會跟上。因為想去參加培訓(xùn)的人會覺得,企業(yè)都在談大數(shù)據(jù),那學大數(shù)據(jù)好找工作呀。如果你仔細想,它也不是那么回事。
不管是不是那么回事,Python是被炒作起來了,它不想火都難。
Python運行效率怎么樣?這需要綜合評估。評估一門語言,如果離開了目標和成本來判斷好壞,那就是扯淡。比如去你家樓下買菜。走路去買,效率是最高的。但人走路的速度非常慢,比不上單車,更比不上代步車。所以,你不能說走路這么慢,為什么還有人走路。
人力的成本遠比機器貴。一門語言學習陳本低,意味著企業(yè)對這么技能所花的錢,也相對較低。所以運行效率不重要。再說了,Python的運行效率低嗎?
火的東西,可以蹭熱點,但別把自己蹭進去了。
我是那我拍,歡迎評論,點贊和關(guān)注。
好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!
本文鏈接:http://xinin56.com/ruanjian/381.html