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 0]]
[1 1]
0
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]