Random函数应用

目录

(一)random的日常应用

1、random.shuffle打乱排序:

2、random.sample用来下采样:

(二)常用函数

1、np.random.RandomState()

2、np.random.uniform()

3、举例:


(一)random的日常应用

1、random.shuffle打乱排序:

        这个随机打乱在日常是常用的一个功能,但是他作用对象是list;并且是对它本身作shuffle,返回的对象为None;

random.shuffle([1, 3, 5, 7])

        补充,除了用shuffle对list对象进行打乱顺序外,还可以用用pandas中自带的 sample这个方法。

        假设df是这个DataFrame

df.sample(frac=1)

       这样对可以对df进行shuffle。其中参数frac是要返回的比例,比如df中有10行数据,我只想返回其中的30%,那么frac=0.3

2、random.sample用来下采样:

import random
import pandas as pd

a = {'a': [1, 4, 5, 6]}
a_pd = pd.DataFrame(a)

a_index = a_pd.index.tolist()
a_index_low = random.sample(a_index, 2)
a_pd_low = a_pd.loc[a_index_low]

(二)常用函数

1、np.random.RandomState()

计算机实现的随机数生成通常为伪随机数生成器,为了使得具备随机性的代码最终的结果可复现,需要设置相同的种子值;

  • np.random.randn(…) ⇒
    • rng = np.random.RandomState(123)
    • rng.randn(…)

2、np.random.uniform()

首先从numpy.random.uniform说起(也即其他函数是对该函数的进一步封装)。

numpy.random.uniform(low=0.0, high=1.0, size=None)

顾名思义,从一个均匀分布([low, high):半开区间)中进行采样。

例如产生[1, 2)(五行五列):

>>> import numpy
>>> np.random.uniform(1, 2, (5, 5))
array([[ 1.16902081,  1.90805984,  1.30759311,  1.90598113,  1.32047656],
       [ 1.58571077,  1.88009484,  1.66531622,  1.0262826 ,  1.40534658],
       [ 1.81087389,  1.87981194,  1.65670468,  1.46972606,  1.66454007],
       [ 1.81041299,  1.52561204,  1.79701198,  1.17840313,  1.86364978],
       [ 1.72654371,  1.92870279,  1.11207754,  1.5091156 ,  1.35108628]])

random 解释:https://docs.scipy.org/doc/numpy-1.10.0/reference/routines.random.html

3、举例:

rng = numpy.random.RandomState(23355)

arrayA = rng.uniform(0,1,(2,3))

该段代码的目的是产生一个2行3列的assarray,其中的每个元素都是[0,1]区间的均匀分布的随机数

这里看以看到,有一个23355这个数字,其实,它是伪随机数产生器的种子,也就是“the starting point for a sequence of pseudorandom number”

对于某一个伪随机数发生器,只要该种子(seed)相同,产生的随机数序列就是相同的

下面给出几个小例子

# 仍以上面的seed为例,但执行多次 

# 利用循环,执行4次 

import numpy 4 for i in [1,2,3,4]: 

rng = numpy.random.RandomState(23455)

arrayA = rng.uniform(0,1,(2,3))

print arrayA

 import numpy 

for i in [1,2,3,4]: 

  rng = numpy.random.RandomState(23455+i) 

  arrayA = rng.uniform(0,1,(2,3)) 

  print ('i = %s' % (i)) 

   print (arrayA)

这里,我们做了一个小小的更改,每次循环的种子都加入了i,由于每次循环i值不同,导致每次循环的种子也不同,下面是改程序段的结果

参考:https://blog.csdn.net/xylin1012/article/details/71931900

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值