numpy中的随机数模块


https://www.cnblogs.com/td15980891505/p/6198036.html

numpy.random模块中提供啦大量的随机数相关的函数。

1 numpy中产生随机数的方法

  1)rand()   产生[0,1]的浮点随机数,括号里面的参数可以指定产生数组的形状

  2)randn()  产生标准正太分布随机数,参数含义与random相同

  3)randint()  产生指定范围的随机数,最后一个参数是元祖,他确定数组的形状

1
2
3
4
5
6
7
8
9
10
11
12
import  numpy as np
from  numpy  import  random as nr
 
#只显示小数点后两位
np.set_printoptions(precision  =  2 )
r1  =  nr.rand( 3 , 4 )
r2  =  nr.randn( 5 , 4 )
r3  =  nr.randint( 0 , 10 ,size  =  ( 4 , 3 ))
 
print  r1
print  r2
print  r3

 

1
2
3
4
5
6
7
8
9
10
11
12
13
[[  0.34   0.51   0.65   0.57 ]
  0.97   0.16   0.62   0.37 ]
  0.23   0.78   0.77   0.46 ]]
[[ - 0.69  - 1.24  - 0.32   1.07 ]
  0.05  - 1.97   1.01  - 1.59 ]
  1.51  - 1.21   1.02  - 0.19 ]
  1.49  - 0.42   0.64   0.07 ]
  [ - 0.1    1.11   0.24  - 0.18 ]]
[[ 9  6  7 ]
  [ 1  9  7 ]
  [ 4  9  6 ]
  [ 3  9  0 ]]
(Pdb)

 2 常用分布

  1)normal()  正太分布

  2)uniform()  均匀分布

  3)poisson()  泊松分布

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding: utf-8 -*-
"""
Spyder Editor
 
This is a temporary script file.
"""
import  numpy as np
from  numpy  import  random as nr
 
#只显示小数点后两位
np.set_printoptions(precision  =  2 )
 
#第一个参数是均值,第二个参数是标准差
r1  =  nr.normal( 100 , 10 ,size  =  ( 3 , 4 ))
print  r1
 
#前两个参数分别是区间的初始值和终值
r2  =  nr.uniform( 0 , 10 ,size  =  ( 3 , 4 ))
print  r2
 
#第一个参数为指定的lanbda系数
r3  =  nr.poisson( 2.0 ,size  =  ( 3 , 4 ))
print  r3

 

1
2
3
4
5
6
7
8
9
10
[[  100.67    98.39    99.36   103.37 ]
  [   98.23    95.11   107.57   111.23 ]
  [   97.26    75.21   110.4    112.53 ]]
[[  2.42   6.81   9.96   3.15 ]
  9.28   4.4    7.87   5.19 ]
  3.47   2.92   4.5    2.58 ]]
[[ 3  1  5  0 ]
  [ 1  0  4  3 ]
  [ 3  1  2  1 ]]
(Pdb)

 

3 乱序和随机抽取

  permutation()随机生成一个乱序数组,当参数是n时,返回[0,n)的乱序,他返回一个新数组。而shuffle()则直接将原数组打乱。choice()是从指定的样本中随机抽取。

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
# -*- coding: utf-8 -*-
"""
Spyder Editor
 
This is a temporary script file.
"""
import  numpy as np
from  numpy  import  random as nr
 
#只显示小数点后两位
np.set_printoptions(precision  =  2 )
 
#返回打乱数组,原数组不变
r1  =  nr.randint( 10 , 100 ,size  =  ( 3 , 4 ))
print  r1
print  nr.permutation(r1)
print  r1
 
print  nr.permutation( 5 )
 
# 使用shuffle打乱数组顺序
=  np.arange( 10 )
nr.shuffle(x)
print  x
 
#xhoice()函数从指定数组中随机抽取样本
#size参数用于指定输出数组的大小
#replace参数为True时,进行可重复抽取,而False表示进行不可重复的抽取。默认为True
=  np.array( 10 )
c1  =  nr.choice(x,size  =  ( 2 , 3 ))
print  c1
 
c2  =  nr.choice(x, 5 ,replace  =  False )
print  c2

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[[ 78  22  43  70 ]
  [ 46  87  12  32 ]
  [ 11  56  89  79 ]]
[[ 11  56  89  79 ]
  [ 78  22  43  70 ]
  [ 46  87  12  32 ]]
[[ 78  22  43  70 ]
  [ 46  87  12  32 ]
  [ 11  56  89  79 ]]
[ 4  1  2  0  3 ]
[ 3  4  9  5  8  2  7  0  6  1 ]
[[ 4  7  9 ]
  [ 9  1  7 ]]
[ 5  3  2  8  4 ]
(Pdb)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM