Numpy学习笔记——random随机函数

1.1 seed([x])

x: 改变随机数生成器的种子 seed, x 可以是任意数字,如10,但不能为空。

seed的作用是让随机结果可重现,当设置相同的seed时,使用random()生成的随机数将会是同一个。

import random
random.seed(1000)
print(random.random())
print(random.random())
random.seed(1000)
print(random.random())
print(random.random())
>>> 
0.7773566427005639
0.6698255595592497
0.7773566427005639
0.6698255595592497

1.2 rand 返回[0,1]之间,从均匀分布中抽取样本

import numpy as np
a=np.random.rand(3)    #一维
b=np.random.rand(2,3)  #二维
print(a)  
print(b)
>>> 
[0.44697358 0.03349412 0.27813818]
[[0.71474249 0.74637932 0.98222338]
 [0.66229189 0.94427003 0.98985659]]

rand函数可以用来生成噪声,下面为一个带噪声的正弦曲线示例

import numpy as np
#绘制正弦曲线
x=np.linspace(-10,10,100)
y=np.sin(x)
z=np.random.rand(len(x)) #生成均匀分布,len(x轴)就是维度
plt.plot(x,y+z)
plt.show()

1.3 randn 返回标准正态分布随机数,平均数为0,方差为1

randn生成一个从标准正态分布中得到的随机变量,标准正态分布即 N(0,1) ,randn的用法与rand相同。

import numpy as np
a = np.random.randn(3)
b = np.random.randn(2,3)
c = np.random.randn(2,2,2)
print(a)
print(b)
print(c)
>>> 
[-1.2590621   1.38328114 -0.77006196]
[[-1.13895892  0.13075651 -0.41164592]
 [-0.34226603 -0.48445867  1.11279817]]
[[[-0.99056062 -0.35844967]
  [ 0.76352262  0.54793668]]

 [[-1.96319971  0.83237917]
  [ 0.09956412 -0.31866979]]]

1.4 randint 随机整数

a = np.random.randint(3)  # 随机生成[0,3)之间的整数
b = np.random.randint(1, 10)  # 随机生成[1,10)之间的整数
c = np.random.randint(1, 10, (5, ))  # 随机在[1,10)之间取5个元素组成一维数组
d = np.random.randint(1, 10, (2, 3))  # 随机在[1,10)之间取6个元素组成二维数组
print(a)
print(b)
print(c)
print(d)
>>> 
2
3
[8 3 5 3 2]
[[9 1 6]
 [2 5 7]]

1.5 random 生成0.0至1.0的随机数

a = np.random.random(3)
b = np.random.random((2,3))
c = np.random.random((2,2,3))
print(a)
print(b)
print(c)
>>> 
[0.03760136 0.58006788 0.65261389]
[[0.41288383 0.23023674 0.02589372]
 [0.89976144 0.31857206 0.18231546]]
[[[0.03716267 0.35935718 0.96734423]
  [0.65647904 0.16369529 0.24393091]]

 [[0.09289193 0.44310636 0.50525154]
  [0.86678832 0.72846957 0.82237951]]]

1.6 choice 从一维数组中生成随机数

第一个参数是1个一维数组,如果只有一个数字就看成range(5) 

第二个参数是维度和元素个数,一个数字是1维,数字是几就是几个元素

a = np.random.choice(5,3)
b = np.random.choice(5,(2,3))
c = np.random.choice([3,4,5,10,13,16,20],3)
print(a)
print(b)
print(c)
>>> 
[0 4 3]
[[2 1 1]
 [3 2 4]]
[13  3 10]

1.7 shuffle对数组进行重排

注意这里多维数组是对axis0进行重排,其他轴不变

下面的例子中,二维数组只有行的顺序发生了变化,列并没有发生变化

import numpy as np
a = np.arange(10)
np.random.shuffle(a)
print(a)
b = np.arange(12).reshape(3,4)
np.random.shuffle(b)
print(b)
>>> 
[8 9 5 3 0 6 2 4 1 7]
[[ 8  9 10 11]
 [ 0  1  2  3]
 [ 4  5  6  7]]

1.8 permutation 对数组进行重排

permutation和上面shuffle的作用一样,就是把数组进行重排

区别在于permutation后原来的数组并不发生变化,返回排序后的新数组,而shuffle的返回值为空,直接对原数组进行重排。

c = np.arange(20).reshape(4,5)
d= np.random.permutation(c)
print(c)
print(d)
>>> 
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]]
[[10 11 12 13 14]
 [ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [15 16 17 18 19]]

1.9 normal 生成正态分布数字

normal [平均值,方差,size]

import numpy as np
a = np.random.normal(1,10,10) # 平均值1,方差10,10个数

正态(高斯)分布的重要性质:

① 密度函数关于平均值对称

② 平均值是它的众数(statistical mode)以及中位数(median)

③ 函数曲线下68.268949%的面积在平均值左右的一个标准差范围内

④ 95.449974%的面积在平均值左右两个标准差2σ的范围内

⑤ 99.730020%的面积在平均值左右三个标准差3σ的范围

1.10 uniform 均匀分布

相比于rand,uniform可以指定均匀抽取随机数区间

import numpy as np
a = np.random.uniform(1,10,10) #在1到10之间生成10个随机数
b = np.random.uniform(1,10,(2,3)) #在1到10之间生成2行3列共计6个随机数
print(a)
print(b)
>>> 
[7.14400238 2.90514403 5.08180631 8.8957117  4.5676755  5.43261469
 5.8423515  7.99743819 9.82741622 6.84344757]
[[5.17510957 2.69849032 3.52172104]
 [6.11546984 5.66389906 4.99856279]]

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值