sql快還是pandas快 用Python做策略回測(cè),耗時(shí)很長(zhǎng),有什么加速辦法?
用Python做策略回測(cè),耗時(shí)很長(zhǎng),有什么加速辦法?用Python做策略回溯測(cè)試需要很長(zhǎng)時(shí)間。加速方法是什么少用點(diǎn),盡量用numpy/panda的矢量化方法。與其使用自己的Python方法,不如看看n
用Python做策略回測(cè),耗時(shí)很長(zhǎng),有什么加速辦法?
用Python做策略回溯測(cè)試需要很長(zhǎng)時(shí)間。加速方法是什么
少用點(diǎn),盡量用numpy/panda的矢量化方法。
與其使用自己的Python方法,不如看看numpy/panda是否有現(xiàn)成的函數(shù)。
numpy有幾個(gè)加速包,例如numexpr。
安裝Intel MKL。
最后,我們可以說(shuō)關(guān)鍵部分是用C/C實(shí)現(xiàn)的
如果您無(wú)法避免Python的for,建議使用numba來(lái)加速。理想情況下,它可以達(dá)到與numpy矢量化相同的速度。
為什么Python效率這么低,還這么火?
在許多情況下,性能不是瓶頸。大約80%的應(yīng)用程序不需要高性能。
Python語(yǔ)言其實(shí)很慢,為什么機(jī)器學(xué)習(xí)這種快速算法步驟通常還是用呢?
對(duì)于那些使用了多種開(kāi)發(fā)語(yǔ)言(Java、C#、nodejs、Erlang)然后轉(zhuǎn)用Python進(jìn)行機(jī)器學(xué)習(xí)的人,我想談?wù)勎业目捶ā?/p>
首先,Python真的很慢嗎?我的回答是真的。非常慢。for循環(huán)比CPP慢兩個(gè)數(shù)量級(jí)。
那么為什么要使用Python呢?如果我們遍歷超過(guò)一億個(gè)數(shù)據(jù),兩個(gè)數(shù)量級(jí)的差異是不可接受的。但是,如果我們使用Python來(lái)執(zhí)行頂層邏輯并阻塞數(shù)以?xún)|計(jì)的數(shù)據(jù),Python只會(huì)循環(huán)十幾次,剩下的就留給CPU和GPU了。所以?xún)蓚€(gè)數(shù)量級(jí)無(wú)關(guān)緊要?一毫秒和100毫秒在整個(gè)系統(tǒng)中并不重要。
Python最大的優(yōu)點(diǎn)是它可以非常優(yōu)雅地將數(shù)據(jù)拋出到高效的C、CUDA中進(jìn)行計(jì)算。Numpy、panda、numba這些優(yōu)秀的開(kāi)源庫(kù)可以非常方便高效地處理海量數(shù)據(jù),借助ZMQ、cell等還可以做分布式計(jì)算,gevent借助epoll系統(tǒng)IO優(yōu)化。因此,它不需要花費(fèi)太多的精力就可以?xún)?yōu)雅高效地完成海量數(shù)據(jù)處理和機(jī)器學(xué)習(xí)任務(wù)。這就是Python如此流行的原因。
好好想想。同樣的性能,代碼只有CPP或Java的三分之一或更少,不是很吸引人嗎?
python pandas怎樣高效地添加一行數(shù)據(jù)?
熊貓?zhí)峁┝舜罅康臄?shù)據(jù)結(jié)構(gòu)和功能,使我們能夠快速方便地處理結(jié)構(gòu)化數(shù)據(jù)。您很快就會(huì)發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。最流行的pandas對(duì)象是dataframe,它是一種面向列的二維表結(jié)構(gòu)!