np.random.randn()、np.random.rand()、np.random.randint()


(1)np.random.randn()函數

語法:

np.random.randn(d0,d1,d2……dn) 
1)當函數括號內沒有參數時,則返回一個浮點數; 
2)當函數括號內有一個參數時,則返回秩為1的數組,不能表示向量和矩陣; 
3)當函數括號內有兩個及以上參數時,則返回對應維度的數組,能表示向量或矩陣; 
4)np.random.standard_normal()函數與np.random.randn()類似,但是np.random.standard_normal()的輸入參數為元組(tuple). 
5)np.random.randn()的輸入通常為整數,但是如果為浮點數,則會自動直接截斷轉換為整數。

作用:

通過本函數可以返回一個或一組服從標准正態分布的隨機樣本值。

特點:

標准正態分布是以0為均數、以1為標准差的正態分布,記為N(0,1)。對應的正態分布曲線如下所示,即 
這里寫圖片描述

標准正態分布曲線下面積分布規律是:

在-1.96~+1.96范圍內曲線下的面積等於0.9500(即取值在這個范圍的概率為95%),在-2.58~+2.58范圍內曲線下面積為0.9900(即取值在這個范圍的概率為99%). 
因此,由 np.random.randn()函數所產生的隨機樣本基本上取值主要在-1.96~+1.96之間,當然也不排除存在較大值的情形,只是概率較小而已。

在神經網絡構建中,權重參數W通常采用該函數進行初始化,當然需要注意的是,通常會在生成的矩陣后面乘以小數,比如0.01,目的是為了提高梯度下降算法的收斂速度。 
W = np.random.randn(2,2)*0.01

import numpy as np

arr1 = np.random.randn(2,4)
print(arr1)
print('******************************************************************')
arr2 = np.random.rand(2,4)
print(arr2)
1
2
3
4
5
6
7
結果:

[[-1.03021018 0.5197033 0.52117459 -0.70102661]
[ 0.98268569 1.21940697 -1.095241 -0.38161758]]
******************************************************************
[[ 0.19947349 0.05282713 0.56704222 0.45479972]
[ 0.28827103 0.1643551 0.30486786 0.56386943]]

(2) np.random.rand()函數

語法:

np.random.rand(d0,d1,d2……dn) 
注:使用方法與np.random.randn()函數相同 
作用: 
通過本函數可以返回一個或一組服從“0~1”均勻分布的隨機樣本值。隨機樣本取值范圍是[0,1),不包括1。 
應用:在深度學習的Dropout正則化方法中,可以用於生成dropout隨機向量(dl),例如(keep_prob表示保留神經元的比例):dl = np.random.rand(al.shape[0],al.shape[1]) < keep_prob

import numpy as np

arr1 = np.random.randn(2,4)
print(arr1)
print('******************************************************************')
arr2 = np.random.rand(2,4)
print(arr2)
1
2
3
4
5
6
7
結果:

[[-1.03021018 0.5197033 0.52117459 -0.70102661]
[ 0.98268569 1.21940697 -1.095241 -0.38161758]]
******************************************************************
[[ 0.19947349 0.05282713 0.56704222 0.45479972]
[ 0.28827103 0.1643551 0.30486786 0.56386943]]
---------------------
作者:木子木泗
來源:CSDN
原文:https://blog.csdn.net/u010758410/article/details/71799142
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

(3) np.random.randint()函數

語法:

numpy.random.randint(low, high=None, size=None, dtype=’l’) 
輸入: 
low—–為最小值 
high—-為最大值 
size—–為數組維度大小 
dtype—為數據類型,默認的數據類型是np.int。 
返回值: 
返回隨機整數或整型數組,范圍區間為[low,high),包含low,不包含high; 
high沒有填寫時,默認生成隨機數的范圍是[0,low)

 

在使用Python進行數據處理時,往往需要用到大量的隨機數據,那如何構造這么多數據呢?Python的第三方庫numpy庫中提供了random函數來實現這個功能。
本文將根據官方文檔以及其他博友的博客一起來談論常見的random函數以及使用
官方文檔

首先說下numpy.random.seed()與numpy.random.RandomState()這兩個在數據處理中比較常用的函數,兩者實現的作用是一樣的,都是使每次隨機生成數一樣,具體可見下圖

 

 

1.numpy.random.rand()
官方文檔中給出的用法是:numpy.random.rand(d0,d1,…dn)
以給定的形狀創建一個數組,並在數組中加入在[0,1]之間均勻分布的隨機樣本。
用法及實現:


2.numpy.random.randn()
官方文檔中給出的用法是:numpy.random.rand(d0,d1,…dn)
以給定的形狀創建一個數組,數組元素來符合標准正態分布N(0,1)
若要獲得一般正態分布則可用sigma * np.random.randn(…) + mu進行表示
用法及實現:


3.numpy.random.randint()
官方文檔中給出的用法是:numpy.random.randint(low,high=None,size=None,dtype)
生成在半開半閉區間[low,high)上離散均勻分布的整數值;若high=None,則取值區間變為[0,low)
用法及實現
high=None的情形


high≠None


4.numpy.random.random_integers()
官方文檔中給出的用法是:
numpy.random.random_integers(low,high=None,size=None)
生成閉區間[low,high]上離散均勻分布的整數值;若high=None,則取值區間變為[1,low]
用法及實現
high=None的情形


high≠None的情形


此外,若要將【a,b】區間分成N等分,也可以用此函數實現
a+(b-a)*(numpy.random.random_integers(N)-1)/(N-1)

5.numpy.random_sanmple()
官方文檔中給出的用法是:
numpy.random.random_sample(size=None)
以給定形狀返回[0,1)之間的隨機浮點數
用法及實現


其他函數,numpy.random.random() ;numpy.random.ranf()
numpy.random.sample()用法及實現都與它相同

6.numpy.random.choice()
官方文檔中給出的用法:
numpy.random.choice(a,size=None,replace=True,p=None)
若a為數組,則從a中選取元素;若a為單個int類型數,則選取range(a)中的數
replace是bool類型,為True,則選取的元素會出現重復;反之不會出現重復
p為數組,里面存放選到每個數的可能性,即概率
用法及實現


以上就是關於random函數的幾種用法,歡迎大家一起交流
---------------------
作者:凍雞hhhh
來源:CSDN
原文:https://blog.csdn.net/m0_38061927/article/details/75335069
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM