您的位置:首页 > 编程语言 > Python开发

Python每日小结(七)

2017-11-03 11:06 405 查看

       1.random.choice与random.sample

        Python标准库中的random模块,可以生成随机浮点数、整数、字符串,甚至帮助我们随机选择列表序列中的一个元素,打乱一组数据等。

        下面我们主要关注random.choice函数与random.sample函数。

        random.choice(seq):

        从一个非空序列中随机返回一个元素,比如:

import random

lists=[1,2,3,4,5,6]
for _ in range(3):
print random.choice(lists)
        运行结果:

       


        random.sample(population,k):

        从一个population sequence中返回一个长度为k的list,该list中的元素是不同的。注意,这里说的不同是指不是population sequence中的同一个元素,举例如下:

import random

lists=[1,2,3,4,5,6]
lists2=[2,2,3,4,5,6]
for _ in range(3):
print random.sample(lists,3)
for _ in range(3):
print random.sample(lists2,3)
        运行结果:

       


        最后一行中的2,2并不是原始集合中的同一个2,可以理解为不放回采样,要是有同位素标记就好了......

       2.numpy.random

        科学计算库NumPy中也有random,与上面不太一样,下面我将对NumPy.random中的choice和sample函数进行介绍。

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

        从给定的一维数列(1-D array)中产生样本,该函数可以一次抽取多个样本,这与random模块中的choice不同。该函数的参数列表释义如下:

        a:传入的一维数列或int,如果是int,则从np.arange(a)中进行随机采样;

        size:输出的样本集合的shape,类型为int或tuple或ints,如果我们给定了该参数为(m,n,k),则该函数将会采样m*n*k个样本,如果该参数为None,则选取一个样本;

        replace:是否为放回采样,True表示有放回,False表示无放回;

        p:a中每项所对应的采样概率,如果未给定该函数,则表示均匀采样。

        下面给出运行示例:

from numpy import random

lists=[1,2,3,4,5,6]
print random.choice(lists,size=[2,3],replace=True)
print random.choice(lists,size=[2,3],replace=False)
        运行结果:

       


        上面给出了replace参数取True和False时的对比,通过这个实验,该参数的意义也就明确了很多。那如果我们传入replace=False,同时size比原始array要大会发生什么呢?

from numpy import random

lists=[1,2,3,4,5,6]
print random.choice(lists,size=[2,4],replace=False)
        运行结果:

       


        啊哦,报错了,不过这也在我们的推测之中。

        下面介绍numpy.random.sample()函数:

        numpy.random.sample(size=None):

        该函数返回半开区间[0.0,1.0)之间的随机浮点数。

        size:输出的shape,与上面的numpy.random.choice()函数中的size参数一致。

        那Python标准库的random模块与numpy.random有什么区别呢?

        Python标准库的random模块处理的对象类型更宽泛一些,并不局限于数(int,float等),还可以是字符串等类型。而numpy.random则专门用于处理数学数据,所以传入的为array,这与NumPy库本身的初衷也很一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: