Numpy的np.random隨機(jī)模塊詳解
1. 隨機(jī)抽樣
import numpy as np np.random.randn(3,3) # 從標(biāo)準(zhǔn)正太分布中返回樣本 np.random.rand(3,3) # 從0-1均勻分布分布中返回樣本 np.random.randint(0, 10, size=(3,3)) # 返回隨機(jī)的整數(shù),左閉右開(kāi)區(qū)間[) np.random.random_integers(0, 10, (3,3)) # 返回隨機(jī)的整數(shù),位于閉區(qū)間[] np.random.random((3,3)) # 返回范圍[0., 1.)之間的隨機(jī)浮點(diǎn)數(shù) np.random.random_sample((3,3)) # 返回范圍[0., 1.)之間的隨機(jī)浮點(diǎn)數(shù) np.random.ranf((3,3)) # 返回范圍[0., 1.)之間的隨機(jī)浮點(diǎn)數(shù) np.random.sample((3,3)) # 返回范圍[0., 1.)之間的隨機(jī)浮點(diǎn)數(shù) # 從[0,5)中挑選3個(gè)數(shù),其權(quán)重分別為p,其中np.random.choice(5, 3) == np.random.randint(0, 5, 3) np.random.choice(5, 3, p=[0.1, 0.25, 0.15, 0.4, 0.1]) # 從樣本中根據(jù)對(duì)應(yīng)的權(quán)重返回隨機(jī)選擇索引,權(quán)重越大越可能被選擇到
2. 隨機(jī)排序
import numpy as np np.random.shuffle(arr) # 隨機(jī)打亂順序,直接是內(nèi)置的,不需要返回 arr = np.random.permutation(arr) # 隨機(jī)打亂順序,需要返回
3. 隨機(jī)分布
分布函數(shù) | 分布說(shuō)明 |
[beta(a, b, size]) | 貝塔分布樣本,在 [0, 1]內(nèi)。 |
[binomial(n, p, size]) | 二項(xiàng)分布的樣本。 |
[chisquare(df, size]) | 卡方分布樣本。 |
[dirichlet(alpha, size]) | 狄利克雷分布樣本。 |
[exponential(scale, size]) | 指數(shù)分布 |
[f(dfnum, dfden, size]) | F分布樣本。 |
[gamma(shape, scale, size]) | 伽馬分布 |
[geometric(p, size]) | 幾何分布 |
[gumbel(loc, scale, size]) | 耿貝爾分布 |
[hypergeometric(ngood, nbad, nsample, size]) | 超幾何分布樣本。 |
[laplace(loc, scale, size]) | 拉普拉斯或雙指數(shù)分布樣本 |
[logistic(loc, scale, size]) | Logistic分布樣本 |
[lognormal(mean, sigma, size]) | 對(duì)數(shù)正態(tài)分布 |
[logseries(p, size]) | 對(duì)數(shù)級(jí)數(shù)分布。 |
[multinomial(n, pvals, size]) | 多項(xiàng)分布 |
[multivariate_normal(mean, cov, size]) | 多元正態(tài)分布。 |
[negative_binomial(n, p, size]) | 負(fù)二項(xiàng)分布 |
[noncentral_chisquare(df, nonc, size]) | 非中心卡方分布 |
[noncentral_f(dfnum, dfden, nonc, size]) | 非中心F分布 |
[normal(loc, scale, size]) | 正態(tài)(高斯)分布 |
[pareto(a, size]) | 帕累托(Lomax)分布 |
[poisson(lam, size]) | 泊松分布 |
[power(a, size]) | 功率分布 |
[rayleigh(scale, size]) | Rayleigh 分布 |
[standard_cauchy(size]) | 標(biāo)準(zhǔn)柯西分布 |
[standard_exponential(size]) | 標(biāo)準(zhǔn)的指數(shù)分布 |
[standard_gamma(shape, size]) | 標(biāo)準(zhǔn)伽馬分布 |
[standard_normal(size]) | 標(biāo)準(zhǔn)正態(tài)分布 (mean=0, stdev=1). |
[standard_t(df, size]) | 標(biāo)準(zhǔn)學(xué)生 t 分布 |
[triangular(left, mode, right, size]) | 三角形分布 |
[uniform(low, high, size]) | 均勻分布 |
[vonmises(mu, kappa, size]) | von Mises分布 |
[wald(mean, scale, size]) | 瓦爾德(逆高斯)分布 |
[weibull(a, size]) | Weibull 分布 |
[zipf(a, size]) | 齊普夫分布 |
4. 隨機(jī)種子
# 1. RandomState隨機(jī)種子的使用:numpy.random.RandomState實(shí)例對(duì)象是線程安全的 from numpy.random import RandomState r = RandomState(1234567890) a = r.randint(1, 10,size=10) r = RandomState(1234567890) b = r.randint(1, 10, size=10) r = RandomState(1234567890) c = r.randint(1, 10, size=10) r = RandomState(1234567890) d = r.randint(1, 10, size=10) a,b,c,d # 輸出: # (array([3, 7, 4, 2, 5, 1, 7, 5, 1, 8]), # array([3, 7, 4, 2, 5, 1, 7, 5, 1, 8]), # array([3, 7, 4, 2, 5, 1, 7, 5, 1, 8]), # array([3, 7, 4, 2, 5, 1, 7, 5, 1, 8])) # 分析:由于每次輸出前都設(shè)置了相同的隨機(jī)種子,所以程序得到的隨機(jī)數(shù)的值相同 # 2. np.random.seed隨機(jī)種子的使用:numpy.random.seed()不是線程安全的 # 如果程序中有多個(gè)線程最好使用numpy.random.RandomState實(shí)例對(duì)象來(lái)創(chuàng)建或者使用random.seed()來(lái)設(shè)置相同的隨機(jī)數(shù)種子。 np.random.seed(1234567890) a = np.random.randint(1, 10, size=10) np.random.seed(1234567899) b = np.random.randint(1, 10, size=10) np.random.seed(1234567890) c = np.random.randint(1, 10, size=10) np.random.seed(1234567899) d = np.random.randint(1, 10, size=10) a,b,c,d # 輸出: # (array([3, 7, 4, 2, 5, 1, 7, 5, 1, 8]), # array([4, 9, 1, 7, 2, 8, 8, 3, 3, 4]), # array([3, 7, 4, 2, 5, 1, 7, 5, 1, 8]), # array([4, 9, 1, 7, 2, 8, 8, 3, 3, 4])) # 分析:由于第一次與第三次輸出前設(shè)置了相同的隨機(jī)種子,而第二次與第四次輸出前設(shè)置了相同的隨機(jī)種子 # 所以第一次與第三次輸出一致,第二次與第四次輸出一致。 # 3. ramdom隨機(jī)種子的使用 import random random.seed(1234567890) a = random.sample(range(10),10) random.seed(1234567890) b = random.sample(range(10),10) c = random.sample(range(10),10) d = random.sample(range(10),10) a,b,c,d # 輸出: # ([9, 2, 7, 1, 4, 8, 5, 0, 6, 3], # [9, 2, 7, 1, 4, 8, 5, 0, 6, 3], # [6, 2, 0, 5, 8, 9, 4, 1, 7, 3], # [2, 7, 3, 8, 6, 1, 4, 9, 0, 5]) # 分析:由于第一次與第二次輸出前設(shè)置了相同的隨機(jī)種子,所以輸出結(jié)果一致; # 而剩下兩次沒(méi)有設(shè)置隨機(jī)種子,隨意兩次結(jié)果都是隨機(jī)輸出的,分別不同
拓展,在訓(xùn)練開(kāi)始時(shí),參數(shù)的初始化是隨機(jī)的,為了讓每次的結(jié)果一致,我們需要設(shè)置隨機(jī)種子。
torch中的隨機(jī)種子使用如下:
opt.seed = random.randint(1, 10000) print("Random Seed: ", opt.seed) torch.manual_seed(args.seed) # 為CPU設(shè)置隨機(jī)種子 if cuda: torch.cuda.manual_seed(seed) # 為當(dāng)前GPU設(shè)置隨機(jī)種子 torch.cuda.manual_seed_all(seed)# 為所有GPU設(shè)置隨機(jī)種子
到此這篇關(guān)于Numpy的np.random隨機(jī)模塊詳解的文章就介紹到這了,更多相關(guān)Numpy隨機(jī)模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python numpy 常用隨機(jī)數(shù)的產(chǎn)生方法的實(shí)現(xiàn)
- OpenCV python sklearn隨機(jī)超參數(shù)搜索的實(shí)現(xiàn)
- numpy中生成隨機(jī)數(shù)的幾種常用函數(shù)(小結(jié))
- Sklearn調(diào)優(yōu)之網(wǎng)格搜索與隨機(jī)搜索原理詳細(xì)分析
- Numpy隨機(jī)抽樣的實(shí)現(xiàn)
- Python?sklearn庫(kù)中的隨機(jī)森林模型詳解
- numpy中幾種隨機(jī)數(shù)生成函數(shù)的用法
- Numpy創(chuàng)建數(shù)組和隨機(jī)數(shù)組的方法小結(jié)
- Pandas+Numpy+Sklearn隨機(jī)取數(shù)的實(shí)現(xiàn)示例
相關(guān)文章
jupyter 實(shí)現(xiàn)notebook中顯示完整的行和列
這篇文章主要介紹了jupyter 實(shí)現(xiàn)notebook中顯示完整的行和列,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04在django中form的label和verbose name的區(qū)別說(shuō)明
這篇文章主要介紹了在django中form的label和verbose name的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05使用用Pyspark和GraphX實(shí)現(xiàn)解析復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)
GraphX是Spark提供的圖計(jì)算API,它提供了一套強(qiáng)大的工具,這篇文章將詳細(xì)為大家介紹如何在Python?/?pyspark環(huán)境中使用graphx進(jìn)行圖計(jì)算,感興趣的可以了解下2024-01-01python 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的總結(jié)
這篇文章主要介紹了python 數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換的使用總結(jié),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01跟老齊學(xué)Python之使用Python操作數(shù)據(jù)庫(kù)(1)
本文詳細(xì)講述了使用python操作數(shù)據(jù)庫(kù)所需要了解的知識(shí)以及準(zhǔn)備工作,十分的詳盡,這里推薦給想學(xué)習(xí)python的小伙伴。2014-11-11Python數(shù)據(jù)類(lèi)型-序列sequence
這篇文章主要介紹了Python數(shù)據(jù)類(lèi)型-序列sequence,在前面,我們已經(jīng)對(duì)Python學(xué)習(xí)做了系統(tǒng)的知識(shí)梳理(Python思維導(dǎo)圖),我們接下來(lái)把知識(shí)點(diǎn)分節(jié)進(jìn)行細(xì)講。這一節(jié),我們講解序列,需要的朋友可以參考下2022-01-01pytorch之torch_scatter.scatter_max()用法
這篇文章主要介紹了pytorch之torch_scatter.scatter_max()用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09