numpy.random函数的一些用法

参考博客

numpy.random.rand()

numpy.random.rand(d0, d1, …, dn)

  • rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1

  • dn表示每个维度

  • 返回值为指定维度的array

输入

1
np.random.rand(4, 2) # 生成4行两列0-1之间的随机数

输出

1
2
3
4
array([[ 0.2639652 ,  0.67762924],
[ 0.50164586, 0.73739781],
[ 0.18457953, 0.85558988],
[ 0.16193526, 0.83935579]])

输入

1
np.random.rand(4, 3, 2) # shape为[4, 3, 2]

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
array([[[ 0.49636822,  0.89954378],
[ 0.5711387 , 0.41691163],
[ 0.05681485, 0.88512829]],

[[ 0.88798283, 0.96294557],
[ 0.91100035, 0.28982022],
[ 0.90098484, 0.85539872]],

[[ 0.99124126, 0.87069271],
[ 0.82365864, 0.33025856],
[ 0.8874623 , 0.22067393]],

[[ 0.62666929, 0.71956291],
[ 0.81974729, 0.46510244],
[ 0.03494486, 0.11045034]]])

numpy.random.randn()

numpy.random.randn(d0,d1,…,dn)

  • randn函数返回一个或一组样本,具有标准正态分布.

  • dn表示每个维度

  • 返回值为指定维度的array

标准正态分布是以0为均值,1为标准差的正态分布,记为N(0, 1)。

1
np.random.randn(4, 2)
1
-0.599153380810341
1
np.random.randn(4, 2)
1
2
3
4
array([[-0.83173279, -0.06084999],
[ 0.30143042, -0.63863605],
[-0.45491282, 0.72084355],
[-0.86603523, 1.14210338]])
1
np.random.randn(4, 3, 2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
array([[[ 0.62674807, -0.40911062],
[-0.65785551, 0.85653665],
[-0.55250578, 1.15478597]],

[[-1.39797824, 1.36343765],
[-0.35807181, 2.08002524],
[-0.16746821, 1.89978231]],

[[-0.89490747, -0.49563846],
[ 0.36720155, -0.30631295],
[ 0.43208381, 1.04328295]],

[[-0.65629808, 0.501748 ],
[ 0.30889304, -0.52872014],
[ 0.04584062, -0.05242994]]])

numpy.random.randint()

numpy.random.randint(low, high=None, size=None, dtype=’l’)

  • 返回随机整数,范围区间为[low,high),包含low,不包含high

  • 参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int

  • high没有填写时,默认生成随机数的范围是[0,low)

1
np.random.randint(1, size=5)
1
array([0, 0, 0, 0, 0])
1
np.random.randint(1, 5)
1
2
1
np.random.randint(-5, 5, size=[2,2])
1
2
array([[ 1,  0],
[-3, 2]])

numpy.random.random_integers

numpy.random.random_integers(low, high=None, size=None)

  • 返回随机整数,范围区间为[low,high],包含low和high

  • 参数:low为最小值,high为最大值,size为数组维度大小

  • high没有填写时,默认生成随机数的范围是[1,low]

1
np.random.random_integers(5, size=5)
1
array([5, 4, 2, 3, 1])

生成[0,1)之间的浮点数

  • numpy.random.random_sample(size=None)

  • numpy.random.random(size=None)

  • numpy.random.ranf(size=None)

  • numpy.random.sample(size=None)

1
2
3
4
5
6
7
8
print('-----------random_sample--------------')
print(np.random.random_sample(size=(2,2)))
print('-----------random--------------')
print(np.random.random(size=(2,2)))
print('-----------ranf--------------')
print(np.random.ranf(size=(2,2)))
print('-----------sample--------------')
print(np.random.sample(size=(2,2)))
1
2
3
4
5
6
7
8
9
10
11
12
-----------random_sample--------------
[[ 0.19678647 0.64750281]
[ 0.70380805 0.18626702]]
-----------random--------------
[[ 0.05688147 0.57224742]
[ 0.5821726 0.8344959 ]]
-----------ranf--------------
[[ 0.57307708 0.08199258]
[ 0.50676558 0.79959829]]
-----------sample--------------
[[ 2.25676224e-04 8.76885950e-01]
[ 7.52204914e-01 6.43694560e-01]]

numpy.random.choice()

numpy.random.choice(a, size=None, replace=True, p=None)

  • 从给定的一维数组中生成随机数

  • 参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率

  • a为整数时,对应的一维数组为np.arange(a)

1
np.random.choice(5, 3)
1
array([4, 4, 2])
1
2
3

np.random.choice(5, 3, replace=False)
# replace为False时,生成的数不能有重复的
1
array([0, 3, 1])
1
np.random.choice(4, 4, replace=False)
1
array([1, 0, 2, 3])
1
2
3
4
np.random.choice(4, size=(3, 2))
array([[2, 1],
[2, 3],
[1, 1]])
1
2
demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone']
np.random.choice(demo_list,size=(3,3))
1
2
3
4
array([['lenovo', 'sansumg', 'lenovo'],
['moto', 'sansumg', 'sansumg'],
['sansumg', 'iphone', 'moto']],
dtype='<U7')
1
2
3
# p是指定每个元素的概率,概率和应为1,且数据个数与a应该相同
demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone']
np.random.choice(demo_list,size=(3,3), p=[0.1,0.6,0.1,0.1,0.1])
1
2
3
4
array([['sansumg', 'sansumg', 'iphone'],
['sansumg', 'sansumg', 'xiaomi'],
['sansumg', 'sansumg', 'sansumg']],
dtype='<U7')

numpy.random.seed()

  • np.random.seed()的作用:使得随机数据可预测。

  • 当我们设置相同的seed,每次生成的随机数相同。如果不设置seed,则每次会生成不同的随机数

1
2
3
4
5
6
7
for i in range(10):
np.random.seed(2)
print(np.random.rand(5))
print(np.random.rand(5))
print(np.random.rand(5))
print(np.random.rand(5))
print()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[ 0.4359949   0.02592623  0.54966248  0.43532239  0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]

[ 0.4359949 0.02592623 0.54966248 0.43532239 0.4203678 ]
[ 0.33033482 0.20464863 0.61927097 0.29965467 0.26682728]
[ 0.62113383 0.52914209 0.13457995 0.51357812 0.18443987]
[ 0.78533515 0.85397529 0.49423684 0.84656149 0.07964548]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值