numpy.random.randn()與rand()的差別
numpy.random.randn(d0, d1, …, dn):傳回一個樣本,具有标準正态分布。
numpy.random.rand(d0, d1, …, dn):生成[0.0, 1.0)之間的随機浮點數,當沒有參數時,傳回一個随機浮點數,當有一個參數時,傳回該參數長度大小的一維随機浮點數數組,參數建議是整數型。
arr1 = np.random.randn(2,4)
print(arr1)
print('******************************************************************')
arr2 = np.random.rand(2,4)
print(arr2)
arr3 = np.random.rand()
print(arr3)
arr4 = np.random.rand(5)
print(arr4)
結果:
[[ 0.95563278 -0.42082697 -0.10447564 0.20068979]
[ 0.32868982 -0.09721076 -0.60840784 1.06532637]]
[[0.8550732 0.3942764 0.4174943 0.02579094]
[0.5020993 0.97848433 0.73730149 0.56157421]]
0.6780456350566645
[0.2493412 0.09923811 0.4561304 0.57118332 0.19036296]
numpy.random.randint(low, high, size, dtype)
numpy.random.randint(low, high, size, dtype):傳回low<=n<high範圍的size大小的dtype類型的數,預設的資料類型是np.int
arr6 = np.random.randint(2,8,[3,4])
print(arr6)
arr7 = np.random.randint(1) #low=1 輸出[0,1)内的一個整數
print(arr7)
arr8 = np.random.randint(1,size=(2,2)) #low=1 size=2行2列 輸出[0,1)内的一個整數數組
print(arr8)
arr9 = np.random.randint(1,(2,2))
print(arr9)
arr10 = np.random.randint(0,2) #輸出[0,2)内的一個整數
print(arr10)
結果:
[[7 2 6 3]
[3 7 4 5]
[7 7 2 5]]
[[0 0]
[0 0]]
[1 1]
random_integers(low, high, size])
random_integers(low, high, size]):傳回随機的整數,位于閉區間 [low, high],若high=None,則取值區間變為[1,low]
arr11 = np.random.random_integers(5)
print(arr11)
arr12 = np.random.random_integers(1,4,size=(2,2))
print(arr12)
結果:
4
[[3 3]
[3 3]]
np.random.random([size])
np.random.random([size]):傳回指定size的[0,1)随機數矩陣
arr13 = np.random.random(size = [3,4])
print(arr13)
print('******************************************************************')
arr14 = np.random.random( [3,4])
print(arr14)
結果:
[[0.26527803 0.67171034 0.70246548 0.44825096]
[0.76077803 0.20380073 0.74659596 0.14237619]
[0.31434966 0.94426788 0.15483195 0.91344428]]
[[0.04324279 0.69555479 0.21200804 0.53683548]
[0.72102381 0.08728245 0.59588028 0.63236087]
[0.40306908 0.814989 0.40163824 0.31842295]]
random_sample、ranf、sample與random作用一樣
print('*********************** random_sample ******************************')
arr15 = np.random.random_sample(size = [3,4])
print(arr15)
print('******************************************************************')
arr16 = np.random.random_sample( [3,4])
print(arr16)
print('************************* ranf ************************************')
arr17 = np.random.ranf(size = [3,4])
print(arr17)
print('******************************************************************')
arr18 = np.random.ranf( [3,4])
print(arr18)
print('************************* sample **********************************')
arr19 = np.random.sample(size = [3,4])
print(arr19)
print('******************************************************************')
arr20 = np.random.sample( [3,4])
print(arr20)
結果:
*********************** random_sample ******************************
[[0.29412804 0.1122396 0.78856723 0.77634053]
[0.96633261 0.58307661 0.07775629 0.27186676]
[0.27539102 0.60943539 0.39007386 0.338068 ]]
[[0.33488086 0.64228799 0.1931146 0.5447358 ]
[0.43556001 0.73542035 0.04830766 0.56365099]
[0.11061345 0.34026631 0.50136089 0.6177079 ]]
************************* ranf ************************************
[[0.34037612 0.44853875 0.63862045 0.05866474]
[0.43913938 0.20100475 0.03291312 0.98640117]
[0.09788694 0.01432033 0.23571517 0.06873537]]
[[0.87444881 0.39837238 0.27922098 0.00149966]
[0.04010832 0.92848349 0.60876142 0.72710036]
[0.18204139 0.20113217 0.43439843 0.14669335]]
************************* sample **********************************
[[0.59275057 0.02409834 0.31335879 0.71755522]
[0.62607108 0.45795429 0.90791699 0.44383454]
[0.59197212 0.31904985 0.66013448 0.92794311]]
[[0.88094892 0.97530443 0.55994939 0.66326205]
[0.46094444 0.93092115 0.13792183 0.10992606]
[0.7725916 0.72609672 0.69457137 0.10830374]]
np.random.shuffle(x)與np.random.permutation(x)
shuffle直接在原來的數組上進行操作,改變原來數組的順序,無傳回值。
permutation不直接在原來的數組上進行操作,而是傳回一個新的打亂順序的數組,并不改變原來的數組。
arr22 = np.arange(10)
print(arr22)
print(np.random.shuffle(arr22))
print(arr22)
結果:
[0 1 2 3 4 5 6 7 8 9]
None
[3 0 1 9 7 2 6 4 8 5]
arr26 = np.arange(10)
print(arr26)
print(np.random.permutation(arr26))
print(arr26)
結果:
[0 1 2 3 4 5 6 7 8 9]
[8 1 3 9 5 6 7 4 0 2]
[0 1 2 3 4 5 6 7 8 9]
numpy.random.choice(a,size=None,replace=True,p=None)
若a為數組,則從a中選取元素;若a為單個int類型數,則選取range(a)中的數
replace是bool類型,為True,則選取的元素會出現重複;反之不會出現重複
p為數組,裡面存放選到每個數的可能性,即機率
arr21 = np.random.choice(5,size=4,replace=True,p=[0.1,0.1,0.3,0.4,0.1])
print(arr21)
arr21 = np.random.choice([5,3,1,6,7],size=4,replace=False,p=[0.1,0.1,0.3,0.4,0.1])
print(arr21)
結果:
[3 1 2 3]
[5 6 7 1]
np.random.seed()
設定相同的seed時,每次生成的随機數相同
np.random.seed(3)
arr23 = np.random.rand(5)
print(arr23)
結果:
[0.5507979 0.70814782 0.29090474 0.51082761 0.89294695]
np.random.seed(3)
arr24 = np.random.rand(5)
print(arr24)
結果:
[0.5507979 0.70814782 0.29090474 0.51082761 0.89294695]