python中的random.sample()方法有什么作用?

时间:2014-03-30 07:12:37

标签: python random

我用Google搜索了很多但却找不到它。我想知道random.sample()方法的用法以及它给出了什么?什么时候应该使用它和一些示例用法。

3 个答案:

答案 0 :(得分:54)

根据documentation

  

random.sample(population,k)

     

返回k长度的唯一元素列表   从人口序列中选择。用于随机抽样而不用   更换。

基本上,它从序列中选取k个独特的随机元素,一个样本:

>>> import random
>>> c = list(range(0, 15))
>>> c
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> random.sample(c, 5)
[9, 2, 3, 14, 11]

random.sample也可以直接使用范围:

>>> c = range(0, 15)
>>> c
range(0, 15)
>>> random.sample(c, 5)
[12, 3, 6, 14, 10]

除了序列,random.sample也适用于集合:

>>> c = {1, 2, 4}
>>> random.sample(c, 2)
[4, 1]

但是,random.sample不适用于任意迭代器:

>>> c = [1, 3]
>>> random.sample(iter(c), 5)
TypeError: Population must be a sequence or set.  For dicts, use list(d).

答案 1 :(得分:1)

random.sample()也适用于文本

示例:

> text = open("textfile.txt").read() 

> random.sample(text, 5)

> ['f', 's', 'y', 'v', '\n']

\ n 也被视为字符,因此也可以返回

如果您首先使用split方法,则可以使用random.sample()从文本文件返回随机单词

示例:

> words = text.split()

> random.sample(words, 5)

> ['the', 'and', 'a', 'her', 'of']

答案 2 :(得分:0)

random.sample(population, k)

它用于从总体中随机采样长度为'k'的样本。返回从填充序列或集合中选择的'k'长度的唯一元素列表

它返回一个新列表,并保留原始种群不变,并且结果列表按选择顺序排列,因此所有子切片也将是有效的随机样本

我举了一个例子,我在其中随机分割数据集。它基本上是一个函数,其中您传递x_train(population)作为参数,并将数据60%的索引作为D_test返回。

import random

def randomly_select_70_percent_of_data_from_1_to_length(x_train):
    return random.sample(range(0, len(x_train)), int(0.6*len(x_train)))