亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      python

      當(dāng)前位置:中華考試網(wǎng) >> python >> python科學(xué)計(jì)算 >> 文章內(nèi)容

      python科學(xué)計(jì)算有哪些提高運(yùn)算速度的技巧?

      來源:中華考試網(wǎng)  [2020年9月21日]  【

         用 Python 做科學(xué)計(jì)算,但是被 Python 的運(yùn)行速度所困擾。矩陣運(yùn)算也很慢,想征求下大家的建議。有什么優(yōu)化 Python 科學(xué)計(jì)算的方法么?

        py科學(xué)計(jì)算用的不太多。也就是最近天天跑數(shù)據(jù)分析。我簡單說自己的一些基本經(jīng)驗(yàn)給比我還菜的新手,拋磚引玉

        一:學(xué)會正確使用numpy scipy。 numpy scipy寫好的絕不自己寫,比如矩陣運(yùn)算等操作,pylab的實(shí)現(xiàn)還算不錯(cuò)。各種函數(shù)都有,盡量使用他們可以避免初學(xué)者大部分的速度不足問題。因?yàn)檫@些函數(shù)大部分都是預(yù)編譯好的。

        根據(jù)我?guī)啄昵暗臏y試,python的矩陣運(yùn)算速度并不慢,(因?yàn)槟氵\(yùn)行的是動(dòng)態(tài)鏈接庫里面的函數(shù)而不是腳本)比mathematica快,和matlab持平。

        大部分新手不擅長看文檔啥都自己造輪子是不好的。當(dāng)然老手把效率寫的比開源庫高也不算啥新聞,畢竟有對特定程序的優(yōu)化

        二:減少for的使用,多使用向量化函數(shù),np.vectorlize可以把函數(shù)變成對數(shù)組逐元素的操作,比for效率高幾個(gè)華萊士。

        三:對內(nèi)存友好,操作大矩陣的時(shí)候減少會引起整矩陣對此copy的操作

        四:系統(tǒng)最慢的大部分時(shí)候是io,包括上面說的內(nèi)存操作和頻繁的讀入讀出以及debug輸出。避免他們,在需要實(shí)時(shí)處理的時(shí)候引入類似于gpu的pipeline管線機(jī)制或者使用靈活的多線程編程可以起到奇效。

        五:matplotlib的繪圖效率并不高明,在使用交互繪圖(plt.ion)的時(shí)候減少不必要的刷新率。

        六:程序?qū)it(運(yùn)行前編譯)友好,避免頻繁的改動(dòng)數(shù)據(jù)類型引起的繁雜類型推導(dǎo)(不過很少見科學(xué)計(jì)算程序有這個(gè)毛病)

        七:要不然,干脆把python用cython之類的玩意編譯了吧。。但在科學(xué)計(jì)算上我覺得這樣做卵用不大。

        科學(xué)計(jì)算最好應(yīng)該還是使用gpu加速,但關(guān)于py如何使用cuda/opencl加速我不太懂。還望后面的朋友補(bǔ)充。一些基本的經(jīng)驗(yàn)就這些,應(yīng)該是入門者都懂了…

      責(zé)編:hym
      • 會計(jì)考試
      • 建筑工程
      • 職業(yè)資格
      • 醫(yī)藥考試
      • 外語考試
      • 學(xué)歷考試