python-numpy库 学习笔记五 numpy随机函数

5 篇文章 0 订阅
5 篇文章 0 订阅

numpy的随机函数

numpy的random子库
np.random.rand()
np.random.randn()
np.randomrandint()

np.random的随机数函数(1)

rand(d0,d1,……dn) 根据d0—dn创建随机数数组,浮点数,[0,1),均匀分布
randn(d0,d1,……dn) 根据d0—dn创建随机数数组,标准正态分布
randint(low[,high,shape]) 根据shape创建随机整数或整数数组,范围是[low,high)
seed(s) 随机种子,s是给定的种子值

import numpy as np
a=np.random.rand(3,4,5)     #创建一个随机数组(3,4,5),元素值0-1均匀分布
print(a)
[[[0.10852289 0.58219195 0.61669251 0.53496732 0.4284126 ]
  [0.71027552 0.42987074 0.60886607 0.92230113 0.07015194]
  [0.57139583 0.98160395 0.37804886 0.83041974 0.32999015]
  [0.83062575 0.42655531 0.59461816 0.61983036 0.31496838]]

 [[0.81893444 0.10666681 0.68279135 0.30914687 0.34884563]
  [0.91752573 0.36649635 0.58365637 0.91932032 0.79877503]
  [0.82172964 0.66941407 0.63268093 0.97155838 0.50234605]
  [0.39262931 0.32906061 0.2971336  0.56040154 0.30024667]]

 [[0.59411643 0.74100158 0.19074535 0.95207661 0.56443231]
  [0.06124346 0.98955809 0.23652576 0.55223728 0.5171431 ]
  [0.63037522 0.2907389  0.75518388 0.02112344 0.60935622]
  [0.58378718 0.86458149 0.40768426 0.89236183 0.5665055 ]]]
print(np.max(a))
0.9895580925113486
print(np.min(a))
0.021123439229216556
b=np.random.randn(3,4,5)        #创建一个随机数组(3,4,5),元素值正态分布
print(b)
[[[ 1.28662224  0.41449243 -0.9395526  -0.53027298  0.21394718]
  [ 0.43466094  0.52261608 -0.78281184 -0.72777173  1.22896809]
  [-0.24015827  0.55482562 -0.8376314  -0.29255503 -1.61562703]
  [ 0.21422818 -0.22746539 -0.23407262 -1.03764941 -0.12213657]]

 [[-0.91826213 -1.50024516 -1.23031647  0.67108298  0.5868192 ]
  [ 0.31278259  1.04300707  0.99249699 -1.57213431 -0.46380387]
  [-0.71112238  0.0139669  -0.19651398 -0.41300057 -1.07885457]
  [ 1.49778337 -1.64478445  1.33352844  0.44141901 -0.26290484]]

 [[-0.82945577  0.53104472  1.14011765  0.39534554 -1.45345542]
  [ 0.21409305 -1.95320379  2.28029033 -0.09479558  0.64801611]
  [-0.10362503  0.57770214  1.87052906 -1.01165838 -0.92811172]
  [-0.13637305 -0.10606273 -0.01532935 -2.01895726 -0.90191615]]]
print(np.max(b))
2.280290334914727
print(np.min(b))
-2.0189572600107746
c=np.random.randint(100,200,(3,4))      #在100-200之间创建一个3行4列的随机数组
print(c)
[[116 106 183 178]
 [116 144 155 190]
 [155 114 142 142]]
np.random.seed(10)              #给定随机种子
d=np.random.randint(100,200,(3,4))
print(d)
[[109 115 164 128]
 [189 193 129 108]
 [173 100 140 136]]
d1=np.random.randint(100,200,(3,4))
print(d1)
[[116 111 154 188]
 [162 133 172 178]
 [149 151 154 177]]
np.random.seed(10)              #在同一个种子下,依次生成的随机数组一样
e=np.random.randint(100,200,(3,4))
print(e)
[[109 115 164 128]
 [189 193 129 108]
 [173 100 140 136]]
e1=np.random.randint(100,200,(3,4))
print(e1)
[[116 111 154 188]
 [162 133 172 178]
 [149 151 154 177]]

np.random的随机数函数(2)

shuffle(a) 根据数组a的第一轴进行随机排列,改变数组x
permutation(a) 根据数组a的第一轴产生一个新的乱序数组,不改变数组x
choice(a,[size,replace,p]) 从一维数组a中以概率p抽取元素,形成size形状新数组replace表示是否可以重用元素,默认为true(可以重复)

import numpy as np
a=np.random.randint(1,100,(4,5))     #在1-100创建一个4行5列的数组
print(a)
[[13 72 40 30 34]
 [24 99 24 80 25]
 [ 1 24 66  2 49]
 [24 79 48 73 23]]
b=np.random.shuffle(a)          #在原数组上修改,随机排列第一列,因此没有赋值给b
print(a)
[[ 1 24 66  2 49]
 [24 99 24 80 25]
 [24 79 48 73 23]
 [13 72 40 30 34]]
print(b)
None

import numpy as np
a=np.random.randint(1,100,(4,5))     #在1-100创建一个4行5列的数组
print(a)
[[58 67 91 67 40]
 [83 70 30 84 11]
 [85 88 88 55 55]
 [37 67 57 62 71]]
b=np.random.permutation(a)        #随机排列第一列后的数组赋值给b,没有改变数组a
print(a)
[[58 67 91 67 40]
 [83 70 30 84 11]
 [85 88 88 55 55]
 [37 67 57 62 71]]
print(b)
[[83 70 30 84 11]
 [37 67 57 62 71]
 [58 67 91 67 40]
 [85 88 88 55 55]]


import numpy as np
a=np.random.randint(1,100,(16))     #在1-100中随机生成一个8个元素的一维数组
print(a)
[91 91 74  6 36 19 38 81  1 38 37 62 68 36 29 27]
b=np.random.choice(a,(3,4))     #从a随机收取元素组成(3,4)的数组,元素可以重复
print(b)
[[38 36 74 91]
 [36 68 81 38]
 [27 19 91 91]]
c=np.random.choice(a,(3,4),replace=True)
#从a随机收取元素组成(3,4)的数组,replacew=true元素可以重复,replace=false,元素不能重复
#replace的默认值为,true,可以重复
print(c)
[[ 1 29 38  1]
 [62  6 38 36]
 [36 27  6 68]]
d=np.random.choice(a,(3,4),replace=False)
print(d)
[[81 74  1 62]
 [37 91 38 29]
 [38 68 36 27]]
f=np.random.choice(a,(3,4),p=a/np.sum(a))  #以概率p从a抽取元素,组成(3,4)数组
print(f)
[[91 91 81  6]
 [36 36 36 38]
 [38 91 38 38]]

np.random的随机数函数(3)

uniform(low,high,size) 产生具有均匀分布的数组,low起始值,high结束值,size形状
normal(loc,scale,size) 产生具有正态分布的数组,loc均值,scale标准差,size形状
poisson(lam,size) 产生具有泊松分布的数组,lam随机事件发生率,size形状

import numpy as np
a=np.random.uniform(1,100,(3,4))     #在1-100中随机生成一个(3,4)的具有均匀分布的数组
print(a)
[[43.4168374  64.78976927 12.99203845 82.27030645]
 [85.52698753 23.0748895  14.65536615 42.25548755]
 [43.759555    8.78827947 76.72084442 25.34123269]]
b=np.random.normal(10,5,(3,4))      #以10为均值,以5为标准差,随机生成一个(3,4)的数组
print(b)
[[17.04495442 13.21978583  9.68851192  3.96576698]
 [14.01150184 10.43208314  0.29285598 14.58884782]
 [ 5.43490551  6.34717191  6.44541801 -0.13578185]]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值