欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python之random.sample()和numpy.random.choice()的優(yōu)缺點(diǎn)說明

 更新時(shí)間:2023年06月14日 16:54:08   作者:Javy Wang  
這篇文章主要介紹了Python之random.sample()和numpy.random.choice()的優(yōu)缺點(diǎn)說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

對比

python中random.sample()方法可以隨機(jī)地從指定列表中提取出N個(gè)不同的元素,列表的維數(shù)沒有限制。

有文章指出:在實(shí)踐中發(fā)現(xiàn),當(dāng)N的值比較大的時(shí)候,該方法執(zhí)行速度很慢。

可以用numpy random模塊中的choice方法來提升隨機(jī)提取的效率。

有問題,從該文章看不出來random.sample方法比choice方法慢多少,我自己仿真倒是發(fā)現(xiàn)random.sample方法比choice方法快的多,后面會舉例說明

numpy.random.choice() 對抽樣對象有要求,必須是整數(shù)或者一維數(shù)組(列表),不能對超過一維的數(shù)據(jù)進(jìn)行抽樣,這是其缺點(diǎn)。

random.sample() 和 numpy.random.choice() 的優(yōu)點(diǎn)都是可以指定抽樣的個(gè)數(shù),一次性從列表中不重復(fù)地抽樣出指定個(gè)數(shù)的元素,其中 random.sample()默認(rèn)就是不重復(fù)抽樣(不放回的抽樣),而numpy.random.choice()默認(rèn)是可以重復(fù)抽樣,要想不重復(fù)地抽樣,需要設(shè)置replace參數(shù)為False,用法如下:

補(bǔ)充

前面說random.sample方法比choice方法快的多,下面附圖為證。

更新

有博友留言說,numpy.random.choice()與 random.sample() 兩者適合的情況不同,建議增加抽樣數(shù)量再試試,下面是逐步增加抽樣數(shù)量后的結(jié)果。

列表元素為100000個(gè),抽樣個(gè)數(shù)為9。

抽樣個(gè)數(shù)為1000。

抽樣個(gè)數(shù)為10000。

抽樣個(gè)數(shù)為50000。

從以上實(shí)驗(yàn)來看,numpy.random.choice()抽樣方法的時(shí)間幾乎不會隨著抽樣數(shù)量的變化而變化,而random.sample() 會隨著抽樣數(shù)量的增加而增加。

所以當(dāng)數(shù)量較少的時(shí)候,random.sample() 用時(shí)非常少,而numpy.random.choice()則很長;當(dāng)抽樣數(shù)量很大的時(shí)候,numpy.random.choice()幾乎不變,而random.sample() 用時(shí)變長。

簡單繪制一下測試結(jié)果,如下所示

從圖上可以看到,numpy.random.choice()的用時(shí)確實(shí)保持不變,而random.sample() 用時(shí)會隨著抽樣比例的增加而線性增長。

總結(jié)

從對象類型上看,random.sample方法比numpy.random.choice方法適用范圍廣。

從速度上看,當(dāng)抽樣數(shù)量小的時(shí)候,random.sample方法比numpy.random.choice方法快很多;當(dāng)抽樣數(shù)量很大的時(shí)候,random.sample方法就不如numpy.random.choice方法了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

最新評論