轉---Python——numpy random類
阿新 • • 發佈:2018-08-29
同時 避免 產生 1.2 數據 code random 範圍 and
numpy中利用random類獲取隨機數. numpy.random.random() 生成隨機浮點數 默認為生成一個隨機的浮點數,範圍是在0.0~1.0之間,也可以通過參數size設置返回數據的size; 生成一個隨機的浮點數: import numpy n = numpy.random.random() print n 1 2 3 輸出: 0.429489486421 1 設置參數size: import numpy n = numpy.random.random(size=(3, 2)) print n 1 2 3 輸出: [[ 0.32018625 0.22410508] [ 0.57830333 0.74477335] [ 0.08333105 0.48533304]] 1 2 3 numpy.random.randint() 產生隨機整數 API: randint(low, high=None, size=None, dtype=’l’) numpy.random.randint()隨機生一個整數int類型,可以指定這個整數的範圍 import numpy as np print np.random.randint(8) print np.random.randint(5, size=3) print np.random.randint(6, size=(3,2)) 1 2 3 4 輸出: 4 [1 1 3] [[2 4] [5 4] [3 0]] 1 2 3 4 5 指定範圍: import numpy as np print np.random.randint(low=5, high=10, size=3) 1 2 輸出: [7 5 5] 1 numpy.random.normal() 高斯分布隨機數 API: normal(loc=0.0, scale=1.0, size=None) loc:均值,scale:標準差,size:抽取樣本的size import numpy n = numpy.random.normal(loc=0.0, scale=1, size=(2, 3)) print n 1 2 3 輸出: [[-0.15040995 -0.43780718 -0.22292445] [-0.89388124 -0.39465164 0.24113838]] 1 2 numpy.random.randn() 標準正態分布隨機數 numpy.random.randn(d0, d1, …, dn)函數: 從標準正態分布中返回一個(d0*d1* …* dn)維樣本值 例1: import numpy as np print np.random.randn(4, 2) 1 2 輸出: [[-1.88753851 -2.54412195] [ 0.51856343 -1.07733711] [ 1.05820592 -0.23889217] [ 0.73309062 0.42152066]] 1 2 3 4 例2: import numpy as np print np.random.randn(4, 2, 3) 1 2 輸出: [[[-1.00477835 1.16919912 -1.28299362] [ 0.0645336 0.19143397 -0.16957401]] [[-1.45250491 -0.51844037 -0.01241654] [ 0.41427599 0.19469926 -0.92450654]] [[-1.90133606 1.23554382 -1.37775698] [-0.98110245 0.3562373 -0.27816068]] [[ 1.0380202 0.24293181 0.5341542 ] [-0.62945999 1.62233629 -0.07299065]]] 1 2 3 4 5 6 7 8 9 10 11 numpy.random.rand() 生成[0, 1)間隨機數 numpy.random.rand(d0, d1, …, dn)函數: 生成一個(d0*d1* …* dn)維位於[0, 1)中隨機樣本 例: import numpy as np print np.random.rand(2,3) 1 2 輸出: [[ 0.06112299 0.02476706 0.04235452] [ 0.47891264 0.68831817 0.31309659]] 1 2 numpy.random.shuffle() 隨機打亂序列 numpy.random.shuffle() 將序列的所有元素隨機排序 <傳入參數可以是一個序列或者元組> import numpy as np x = range(0, 8, 1) print x np.random.shuffle(x) print x 1 2 3 4 5 輸出: [0, 1, 2, 3, 4, 5, 6, 7] [2, 3, 5, 4, 1, 7, 0, 6] 1 2 3 numpy.random.choice() 隨機選取序列的一個元素 numpy.random.choice()可以從序列(字符串、列表、元組等)中隨機選取,返回一個列表,元組或字符串的隨機項。 import numpy as np print np.random.choice(['a','b','c','d','e']) 1 2 輸出: c 1 print np.random.choice(5, 6) 1 輸出(6個小於5的元素): [2 3 3 3 1 2] 1 p:每個條目出現的概率。如果沒有,假設樣本在A中的所有條目都具有均勻分布。 import numpy as np print np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0]) 1 2 (p=[0.1, 0, 0.3, 0.6, 0]即出現0 1 2 3 4的概率分別是[0.1, 0, 0.3, 0.6, 0]) 輸出: [0 3 2] 1 import numpy as np ss = ['pooh', 'rabbit', 'piglet', 'Christopher'] print np.random.choice(ss, 5, p=[0.5, 0.1, 0.1, 0.3]) 1 2 3 輸出: ['Christopher' 'piglet' 'pooh' 'piglet' 'Christopher'] 1 numpy.random.binomial() 二項分布采樣 numpy.random.RandomState.binomial(n, p, size=None)表示對一個二項分布進行采樣,s為成功次數 P(N)=CsnPs(1?P)n?s size:采樣的次數,n p即式中的n p;函數的返回值表示n中發生/成功的次數s. 如:當n=5,p=0.2,size=1000,即5個事件每個發生的概率為0.2,則5個同時發生的概率,采樣size=1000次: P(p=0.2)=C55p5(1?p)0=0.32 import numpy as np print sum(np.random.binomial(5, 0.2, size=10000)==0)/10000. 1 2 可得: 0.3246 1 很接近手動計算結果. numpy.random.RandomState() 指定種子值 numpy.random.RandomState()指定種子值(指定種子值是為了使同樣的條件下每次產生的隨機數一樣,避免程序調試時由隨機數不同而引起的問題) 如不設置種子值時,np.random.randint(8)可能產生0-7內的任意整數,且每次產生的數字可能是任意一種. 而設置種子值後,np.random.RandomState(0).randint(8)可能產生0-7內的任意整數,但種子值不變時每次運行程序產生的數字一樣. 產生隨機整數: import numpy as np print np.random.RandomState(0).randint(8) 1 2 輸出: 4 1 生成隨機浮點數: import numpy n1 = numpy.random.RandomState(0).random_sample() n2 = numpy.random.RandomState(0).random_sample(size=(2,3)) print n1,n2 1 2 3 4 輸出: 0.548813503927 [[ 0.5488135 0.71518937 0.60276338] [ 0.54488318 0.4236548 0.64589411]]
轉---Python——numpy random類