Random裡面常用的一些随機數函數
官方文檔位址: https://docs.scipy.org/doc/numpy-1.16.0/reference/routines.random.html
下面的代碼是pyhon3.6 numpyt1.16.0
import numpy as np
np.random.seed(666)
1.rand(d0, d1, d2, ... ,dn) 這個函數傳回的資料在[0,1)之間,具有均勻分布的特點
rand等價于uniform([low, high ,size])這個函數 也就是low=0,high=1時 裡面的參數代表的是 生成array的dim(次元)
x = np.random.rand(3)
y = np.random.uniform(0,1,3)
x,y
output:
(array([0.70043712, 0.84418664, 0.67651434]),
array([0.72785806, 0.95145796, 0.0127032 ]))
x = np.random.rand(2, 3)
y = np.random.uniform(0,1,(2,3))
x,y
output:
(array([[0.192892 , 0.70084475, 0.29322811],
[0.77447945, 0.00510884, 0.11285765]]),
array([[0.11095367, 0.24766823, 0.0232363 ],
[0.72732115, 0.34003494, 0.19750316]])
2.randn(d0, d1, d2, ..., dn)
這個函數傳回的資料 具有 标準正态分布的特點,也就是均值為0,方差為1
randn等價于 normal([loc, scale, size]) 這個函數, 也就是loc=0, scale=1時
x = np.random.randn(3)
y = np.random.normal(0,1,3)
x,y
output:
(array([-0.18842439, -0.04148929, -0.98479191]),
array([-1.35228176, 0.19432385, 0.26723935]))
x = np.random.randn(2,3)
y = np.random.normal(0,1,(2,3))
x,y
output:
(array([[-0.4264737 , 1.44773506, -0.1963061 ],
[ 1.51814514, 0.07722188, -0.06399132]]),
array([[ 0.94592341, 1.20409101, -0.45124074],
[-1.58744651, -1.86885548, 0.10037737]]))
3.randint([low, high, size, dtype])
這個函數生成的是随機整數 從low開始 不包含high
如果隻傳入一個參數T 那就生成從0到T的随機整數
size代表的是生成資料的shape 下面是例子
np.random.randint(1,10,size=5)#size=5 就生成了有五個資料的一維向量
output: array([1, 5, 7, 8, 9])
np.random.randint(1,10,size = (2,3))#size=(2,3) 就生成了一個 2行3列 的二維數組
output: array([[3, 9, 2],
[1, 9, 3]])
4.random(size) 這個函數可以生成[0.0, 1.0)之間的随機數
np.random.random(5)
output: array([0.03643288, 0.72687158, 0.00390984, 0.050294 , 0.99199232])
np.random.random((2,3))
output: array([[0.2122575 , 0.94737066, 0.45154055],
[0.99879467, 0.64750149, 0.70224071]])
5.choice[a, size] 這個函數意思是從a中随機選取數組
其中a可以是個數字 也可以是個數組
#當參數a為數字時 相當于先執行了一下 x = np.arange[a] 然後再從x裡面 随機挑選數字
np.random.choice(5,2)
#上面的式子就 等價于 下面兩個式子
#x = np.arange(5)
#np.random.choice(x, 2)
output: array([2, 1])
#當參數為數組時 下面這個例子 就相當于選出2行3列 其中每個元素 都來自于這個數組的随機值
np.random.choice([1, 2, 3, 4, 5], size=(2,3))
output: array([[5, 4, 4],
[2, 4, 3]])
6.shuffle(x)
這個函數用于将數組x随機排列
x = np.arange(5)
np.random.shuffle(x)
x
output:array([4, 0, 3, 1, 2])
#如果數組是多元的 2維為例子
#那麼 這個函數 隻會在第一次元進行打散 也就是行 打亂順序, 每一行裡面的元素 并不會打散
x= np.arange(10).reshape(2,5)
np.random.shuffle(x)
x
output:
array([[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4]])
7.permutation(x)
這個函數跟shuffle類似,也是用于打散數組
于shuffle不同的是 這個函數不會改變原來的數組 而會重新生成一個array
#以二維數組為例子
x = np.arange(12).reshape(3,4)
y = np.random.permutation(x)
x,y
output:(array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]),
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[ 0, 1, 2, 3]]))
具體參考連接配接:https://www.bilibili.com/video/BV1U7411x76j?t=110&p=7