1. 程式人生 > >Numpy隨機抽樣

Numpy隨機抽樣

Numpy 的隨機抽樣功能非常強大,主要由 random 模組完成。

首先,我們需要了解如何使用 numpy 也就是生成一些滿足基本需求的隨機資料。主要由以下一些方法完成:

rand

random.rand(d0, d1, ..., dn) 方法的作用為:指定一個數組,並使用 [0, 1) 區間隨機資料填充,這些資料均勻分佈。

In [35]: import numpy as np

In [36]: np.random.rand(2,5)
Out[36]:
array([[ 0.95477626,  0.86310048,  0.52210115,  0.31657882,  0.51388808],
       [
0.96081154, 0.92429155, 0.91556681, 0.58216029, 0.79541621]]) In [37]: np.random.rand(2,5) Out[37]: array([[ 0.21338028, 0.64965883, 0.66134919, 0.59493323, 0.7210417 ], [ 0.03028672, 0.57322996, 0.55750938, 0.21010241, 0.70697314]])

randn

random.randn(d0, d1, ..., dn)random.rand(d0, d1, ..., dn) 的區別在於,返回的隨機資料符合標準正太分佈。

In [38]: import numpy as np

In [39]: np.random.randn(1,10)
Out[39]:
array([[ 1.73156151, -1.84007543,  0.14878382,  0.51311413, -1.90056873,
        -0.63300809, -0.90696569, -0.3109273 ,  0.20482113, -0.65825151]])

In [40]: np.random.randn(1,10)
Out[40]:
array([[-0.45217741,  1.57705333,  0.179237  ,  2.51487338, -0.81338415
, 0.86565983, -1.26091685, 0.67729083, -0.01673803, -0.88410194]])

randint

randint(low, high, size, dtype) 方法將會生成 [low, high) 的隨機整數。注意這是一個半開半閉區間。

In [41]: import numpy as np                    
                                               
In [42]: np.random.randint(2, 5, 10)           
Out[42]: array([2, 3, 2, 2, 4, 3, 2, 4, 3, 3]) 
                                               
In [43]: np.random.randint(2, 5, (6,))         
Out[43]: array([4, 4, 2, 2, 4, 2])             
                                               
In [44]: np.random.randint(2, 5, (6,6))        
Out[44]:                                       
array([[4, 3, 4, 2, 3, 2],                     
       [3, 2, 4, 3, 2, 2],                     
       [3, 2, 3, 3, 2, 2],                     
       [2, 3, 4, 2, 4, 3],                     
       [4, 2, 2, 3, 2, 3],                     
       [2, 4, 4, 3, 3, 3]])                    

random_integers

random_integers(low, high, size) 方法將會生成 [low, high] 的 np.int 型別隨機整數。注意這是一個閉區間。

In [45]: import numpy as np

In [46]: np.random.random_integers(2, 5, 10)
DeprecationWarning: This function is deprecated. Please call randint(2, 5 + 1) instead
  if __name__ == '__main__':
Out[46]: array([3, 3, 2, 5, 4, 2, 5, 3, 5, 2])

random_sample

random_sample(size) 方法將會在 [0, 1) 區間內生成指定 size 的隨機浮點數。

In [47]: import numpy as np                                             
                                                                        
In [48]: np.random.random_sample((6,6))                                 
Out[48]:                                                                
array([[ 0.42009732,  0.05595987,  0.65022868,  0.18997229,  0.69814036,
         0.61523511],                                                   
       [ 0.2985339 ,  0.50901118,  0.06090717,  0.76180005,  0.86715278,
         0.09642734],                                                   
       [ 0.66932351,  0.05251065,  0.02306205,  0.97841557,  0.38419852,
         0.30673377],                                                   
       [ 0.81771047,  0.67702204,  0.21086147,  0.64027755,  0.42783604,
         0.90985532],                                                   
       [ 0.47946547,  0.1488386 ,  0.31938335,  0.06678984,  0.25343433,
         0.01580869],                                                   
       [ 0.46362814,  0.89429929,  0.86515244,  0.26026441,  0.28736345,
         0.91810846]])                                                  

random.random_sample 類似的方法還有:

  • random.random([size])
  • random.ranf([size])
  • random.sample([size])

它們 4 個的效果都差不多。

choice

choice(a, size, replace, p) 方法將會給定的 1 維數組裡生成隨機數。

In [49]: import numpy as np

In [50]: np.random.choice(10, 5)
Out[50]: array([1, 1, 2, 8, 1])

上面的程式碼將會在 np.arange(10) 中生成 5 個隨機數。

概率密度分佈

除了上面介紹的 6 中隨機數生成方法,numpy 還提供了大量的滿足特定概率密度分佈的樣本生成方法。它們的使用方法和上面非常相似,這裡就不再一一介紹了。列舉如下:

  1. random.beta(a,b,size):從 Beta 分佈中生成隨機數。
  2. random.binomial(n, p, size):從二項分佈中生成隨機數。
  3. random.chisquare(df,size):從卡方分佈中生成隨機數。
  4. random.dirichlet(alpha,size):從 Dirichlet 分佈中生成隨機數。
  5. random.exponential(scale,size):從指數分佈中生成隨機數。
  6. random.f(dfnum,dfden,size):從 F 分佈中生成隨機數。
  7. random.gamma(shape,scale,size):從 Gamma 分佈中生成隨機數。
  8. random.geometric(p,size):從幾何分佈中生成隨機數。
  9. random.gumbel(loc,scale,size):從 Gumbel 分佈中生成隨機數。
  10. random.hypergeometric(ngood, nbad, nsample, size):從超幾何分佈中生成隨機數。
  11. random.laplace(loc,scale,size):從拉普拉斯雙指數分佈中生成隨機數。
  12. random.logistic(loc,scale,size):從邏輯分佈中生成隨機數。
  13. random.lognormal(mean,sigma,size):從對數正態分佈中生成隨機數。
  14. random.logseries(p,size):從對數系列分佈中生成隨機數。
  15. random.multinomial(n,pvals,size):從多項分佈中生成隨機數。
  16. random.multivariate_normal(mean, cov, size):從多變數正態分佈繪製隨機樣本。
  17. random.negative_binomial(n, p, size):從負二項分佈中生成隨機數。
  18. random.noncentral_chisquare(df,nonc,size):從非中心卡方分佈中生成隨機數。
  19. random.noncentral_f(dfnum, dfden, nonc, size):從非中心 F 分佈中抽取樣本。
  20. random.normal(loc,scale,size):從正態分佈繪製隨機樣本。
  21. random.pareto(a,size):從具有指定形狀的 Pareto II 或 Lomax 分佈中生成隨機數。
  22. random.poisson(lam,size):從泊松分佈中生成隨機數。
  23. random.power(a,size):從具有正指數 a-1 的功率分佈中在 0,1 中生成隨機數。
  24. random.rayleigh(scale,size):從瑞利分佈中生成隨機數。
  25. random.standard_cauchy(size):從標準 Cauchy 分佈中生成隨機數。
  26. random.standard_exponential(size):從標準指數分佈中生成隨機數。
  27. random.standard_gamma(shape,size):從標準 Gamma 分佈中生成隨機數。
  28. random.standard_normal(size):從標準正態分佈中生成隨機數。
  29. random.standard_t(df,size):從具有 df 自由度的標準學生 t 分佈中生成隨機數。
  30. random.triangular(left,mode,right,size):從三角分佈中生成隨機數。
  31. random.uniform(low,high,size):從均勻分佈中生成隨機數。
  32. random.vonmises(mu,kappa,size):從 von Mises 分佈中生成隨機數。
  33. random.wald(mean,scale,size):從 Wald 或反高斯分佈中生成隨機數。
  34. random.weibull(a,size):從威布林分佈中生成隨機數。
  35. random.zipf(a,size):從 Zipf 分佈中生成隨機數。

相關推薦

Numpy隨機抽樣

Numpy 的隨機抽樣功能非常強大,主要由 random 模組完成。 首先,我們需要了解如何使用 numpy 也就是生成一些滿足基本需求的隨機資料。主要由以下一些方法完成: rand random.rand(d0, d1, ..., dn) 方法的作用為:指定一

隨機抽樣 (numpy.random)

via hyper pseudo ocs wal gauss array diagonal title 隨機抽樣 (numpy.random) 簡單的隨機數據 rand(d0, d1, ..., dn) 隨機值 >>> np.random

R語言:隨機抽樣(sample函數)

.cn png 函數 -1 數據集 img image 如果 一個數 如果想從一堆數據集中隨機抽出一個數,用sample函數就能實現,代碼展示如下: forehead<-c(249,189,128,111,184,233,313,120,151,196,135,

隨機抽樣一致 RANSAC

轉自:https://www.cnblogs.com/cfantaisie/archive/2011/06/09/2076864.html Ransac是用途很廣泛的演算法,詳細介紹請看http://en.wikipedia.org/wiki/RANSAC。下面簡單介紹一下(沒興趣的可以略過不看

opencv3 SIFT特徵提取方法和RANSAC(隨機抽樣一致性方法)進行剔除無匹配點

最近整理一下利用SIFT特徵提取方法和RANSAC(隨機抽樣一致性方法)進行剔除無匹配點的內容 //讀取影象 Mat img01=imread("3.png"); Mat img02=imread("4.png"); imshow("orig

python--DataFrame隨機抽樣

平時工作中,經常遇到隨機抽樣的需求,可用Pandas庫中的sample函式,簡單又快捷。 官方文件解釋在這:sample DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_sta

python3 成為錦鯉的第一步!瞭解隨機抽樣之蓄水池演算法

python3 錦鯉第一步!瞭解隨機抽樣之蓄水池演算法 蓄水池演算法 問題背景: 樣本空間為N,從N個樣本中隨機不重複地抽取K個樣本,其中N是未知且非常巨大的數,如何保證每個樣本是等概率被抽取才是關鍵。 演算法邏輯: (1)先選取前k個數據(0,1,

Hive實現從表中隨機抽樣得到一個不重複的資料樣本

方法一: select  *  from table_a  order by rand() limit 100; 方法二: select * from (   select e.*, cast(

oracle SQL sample 隨機抽樣查詢

建立測試表 SQL> create table t1 (x int); Table created. 插入10000行資料 SQL> begin   2  for i in 1..10000 loop   3  insert into t1 values (i

SQL 隨機抽樣的總結

對於SQL 隨機抽樣我們常想到的就是newid(),但如果對於一個在百萬、千萬甚至更大海量資料表中抽樣的話,簡單的newid(),其效能,效率就不是很理想了。所以在這裡有必要討論一下,擇優而用。 long_goods是一個百萬資料的表,Ctrl+L執行以下語句: --id

隨機抽樣一致性演算法(RANSAC)

本文翻譯自維基百科,英文原文地址是:http://en.wikipedia.org/wiki/ransac,如果您英語不錯,建議您直接檢視原文。     RANSAC是“RANdom SAmple Consensus(隨機抽樣一致)”的縮寫。它可以從一組包含“局外點”的觀

最小二乘法和隨機抽樣一致性

1. 原理 最小二乘法(leastSquares)的原理1 leastSquares通過最小化測量資料與模型資料的平方和, 求出模型引數。 e=sum(Yi−f(Xi)) 其中e是k與t的二次函式, 求其最小, 即求其極值; 求偏導dk=0,dt=0。

隨機抽樣一致性(RANSAC)演算法詳解

隨機抽樣一致性(RANSAC)演算法能夠有效的剔除特徵匹配中的錯誤匹配點。 實際上,RANSAC能夠有效擬合存在噪聲模型下的擬合函式。實際上,RANSAC演算法的核心在於將點劃分為“內點”和“外點”。在一組包含“外點”的資料集中,採用不斷迭代的方法,尋找最優引數模型,不符合最優模型的點,被定義為“外點”。這就

LeetCode382. 連結串列隨機節點————蓄水池抽樣演算法

//蓄水池抽樣 class Solution { private: ListNode * HEAD; public: //初始化 Solution(ListNode* head) { srand((unsigned)time(nullptr)); HEAD = hea

Numpy攻略:模擬在隨機時間點

具體步驟: 1.生成隨機索引:用randint函式生成隨機整數 2.模擬交易過程:用Numpy的take函式,從收盤價陣列中選取若干函式。 3.繪製利潤直方圖 完整程式碼如下: import numpy import fix_yahoo_finance as yf yf.pdr_over

python numpy array random 隨機排列(打亂訓練資料)

對numpy.array重新排列: numpy.random.shuffle(x):修改本身,打亂順序 import numpy as np arr = np.array(range(0, 21,

演算法(二)蓄水池抽樣演算法快速隨機抽取reads

原創:hxj7 關鍵詞:蓄水池演算法; fastq檔案往往都很大,出於測試目的,我們經常要從fastq檔案中隨機抽取reads,生成一個小一點的fastq檔案,以加快測試效率。假設我們要從一個包含大約100M reads的fastq檔案中隨機抽取1M reads

numpy基礎屬性方法隨機整理(七)--- np.take() / np.where / np.argmax()/np.argmin()(對照pandas相應功能的屬性和方法對比學習)

Note1: np.take(close_prices, np.where(weekdays==weekday)) pandas中參考 《pandas基礎屬性方法隨機整理(四)—例項梳理(多知識點)》有三種方法實現該條件查詢功能: 方法1:輔助列 dat

理論分佈和抽樣分佈------(一)事件、概率和隨機變數(離散、連續)

抽樣分佈:從間斷性變數總體的理論分佈(二項分佈和泊松分佈)和連續性變數總體的理論分佈中抽出的樣本統計數的分佈,即抽樣分佈。 一、事件和事件發生的概率 事件:在自然界中一種事物,常存在幾種可能出現的情況,每一種可能出現的情況稱為事件 事件的概率:每一件事出現的可能性,稱為

Numpy:排序及返回索引、多重複制、兩個矩陣對應元素取最小值、隨機選擇元素

1.排序: sort() # 方法一: import numpy as np a = np.array([[4,3,5,],[1,2,1]]) print (a) b = np.sort(a, ax