Python——Numpy的random子库
NumPy的random子库
np.random.*
np.random.rand()
np.random.randn()
np.random.randint()
import numpy as np a=np.random.rand(3,4,5) a Out[83]: array([[[ 0.08662874, 0.82948848, 0.68358736, 0.85925231, 0.18250681], [ 0.62005734, 0.38014728, 0.85111772, 0.07739155, 0.9670788 ], [ 0.83148769, 0.98684984, 0.17931358, 0.78663687, 0.32991487], [ 0.41630481, 0.40143165, 0.39719115, 0.35902372, 0.80809515]], [[ 0.83119559, 0.84908059, 0.03704835, 0.99169556, 0.25103526], [ 0.54950967, 0.21890653, 0.50118637, 0.61440841, 0.33158322], [ 0.28599297, 0.6478492 , 0.42480153, 0.64245498, 0.50198969], [ 0.87671252, 0.4551307 , 0.18533867, 0.38861156, 0.98937246]], [[ 0.21903302, 0.76057185, 0.51972563, 0.28018995, 0.9267844 ], [ 0.49750795, 0.86679355, 0.60877593, 0.9502196 , 0.63946047], [ 0.7766992 , 0.51985393, 0.9756528 , 0.57621679, 0.87955331], [ 0.6432478 , 0.35046943, 0.91971312, 0.51282177, 0.13310527]]]) sn=np.random.randn(3,4,5) sn Out[86]: array([[[-0.15116386, 0.85164049, 2.04232044, 0.5412239 , -0.65171862], [-0.23334418, -0.44215246, -1.19597071, -1.2189118 , 0.02157593], [ 0.91657483, 0.2611884 , 1.11715427, -1.02409543, -1.38927614], [-0.19741865, -0.15042967, 1.174679 , 1.27795408, -0.31847884]], [[ 1.4637826 , 1.43320029, -0.60038343, 1.39244389, -0.75747975], [ 0.52065785, -0.64790451, -0.32049525, 1.17868116, -0.05638849], [ 0.22874314, 0.68671056, -1.69309123, -0.54882906, -0.23721541], [-0.31578954, -0.44044017, -1.31905554, 2.13304617, -0.63259492]], [[ 0.23859545, 0.40294529, -0.2073546 , -0.90358886, -0.07341441], [-0.65382437, -0.21540712, -0.18190539, -1.32444175, -0.49808978], [ 0.68718048, 1.23431895, 0.01745539, 0.74168673, 2.06773505], [-2.61703882, 0.02591586, -0.45429583, -0.09624749, -0.44027003]]]) b=np.random.randint(100,200,(3,4)) b Out[88]: array([[133, 149, 151, 197], [160, 187, 108, 140], [139, 103, 168, 123]]) b=np.random.randint(100,200,(3,4)) b Out[90]: array([[166, 144, 136, 107], [106, 194, 175, 127], [115, 107, 132, 178]]) np.random.seed(10) np.random.randint(100,200,(3,4)) Out[92]: array([[109, 115, 164, 128], [189, 193, 129, 108], [173, 100, 140, 136]]) np.random.seed(10) np.random.randint(100,200,(3,4)) Out[94]: array([[109, 115, 164, 128], [189, 193, 129, 108], [173, 100, 140, 136]]) np.random.seed(5) np.random.randint(100,200,(3,4)) Out[97]: array([[199, 178, 161, 116], [173, 108, 162, 127], [130, 180, 107, 176]]) np.random.seed(5) np.random.randint(100,200,(3,4)) Out[99]: array([[199, 178, 161, 116], [173, 108, 162, 127], [130, 180, 107, 176]])
给定随机数组种子之后,产生的随机数组不变。
shuffle函数
import numpy as np a=np.random.randint(100,200,(3,4)) a Out[102]: array([[115, 153, 180, 127], [144, 177, 175, 165], [147, 130, 184, 186]]) np.random.shuffle(a) a Out[104]: array([[147, 130, 184, 186], [115, 153, 180, 127], [144, 177, 175, 165]]) np.random.shuffle(a) a Out[106]: array([[147, 130, 184, 186], [115, 153, 180, 127], [144, 177, 175, 165]]) np.random.shuffle(a) a Out[108]: array([[144, 177, 175, 165], [147, 130, 184, 186], [115, 153, 180, 127]])
shuffle函数随意调换两轴
permutation函数
a=np.random.randint(100,200,(3,4)) a Out[110]: array([[141, 162, 101, 182], [116, 178, 105, 158], [100, 180, 104, 136]]) np.random.permutation(a) Out[111]: array([[141, 162, 101, 182], [100, 180, 104, 136], [116, 178, 105, 158]]) a Out[112]: array([[141, 162, 101, 182], [116, 178, 105, 158], [100, 180, 104, 136]])
permutation 函数作用之后并不改变数组a
choice 函数,抽取
import numpy as np b=np.random.randint(100,200,(8,)) b Out[115]: array([127, 131, 102, 168, 138, 183, 119, 118]) np.random.choice(b,(3,2)) Out[116]: array([[131, 183], [118, 138], [138, 183]]) np.random.choice(b,(3,2),replace=False) #replace表示是否可以重复抽取,默认为False Out[117]: array([[102, 131], [127, 138], [183, 168]]) np.random.choice(b,(3,2),p=b/np.sum(b)) #p是随机概率,出现几率与数字大小成正比。 Out[118]: array([[118, 127], [183, 183], [131, 183]])
import numpy as np q=np.random.uniform(0,10,(3,4)) q Out[122]: array([[ 5.75413707, 5.79721399, 0.64506899, 1.7724613 ], [ 3.41527086, 6.08702583, 1.95474956, 1.21548467], [ 9.34679509, 3.10979918, 4.74316569, 0.62211558]]) n=np.random.normal(10,5,(3,4)) n Out[124]: array([[ 5.46196987, 6.27937203, 9.22652647, 12.7923338 ], [ 2.38821804, 5.53678405, 13.12062969, 5.9740824 ], [ 11.06140028, 12.46176925, 18.3372659 , 0.47620034]])
参考文献: