在Python中使用random.sample()后,如何获取剩余的示例?

在Python中使用random.sample()后,如何获取剩余的示例?,python,python-3.x,random,sample,Python,Python 3.x,Random,Sample,我有一个很大的元素列表(在这个例子中,我假设它充满了数字)。例如:l=[1,2,3,4,5,6,7,8,9,10] 现在我想从该列表中抽取两个样本,一个包含80%的元素(当然是随机选择的),另一个包含其余元素(20%),因此我可以使用较大的一个来训练机器学习工具,其余的用来测试该训练。我使用的函数来自random,我是这样使用的: sz = len(l) #Size of the original list per = int((80 * sz) / 100) #This will be the

我有一个很大的元素列表(在这个例子中,我假设它充满了数字)。例如:
l=[1,2,3,4,5,6,7,8,9,10]
现在我想从该列表中抽取两个样本,一个包含80%的元素(当然是随机选择的),另一个包含其余元素(20%),因此我可以使用较大的一个来训练机器学习工具,其余的用来测试该训练。我使用的函数来自
random
,我是这样使用的:

sz = len(l) #Size of the original list
per = int((80 * sz) / 100) #This will be the length of the sample list with the 80% of the elements (I guess)
random.seed(1) # As I want to obtain the same results every time I run it.
l2 = random.sample(l, per)
我不完全确定,但我相信通过这些代码,我得到了一个80%的随机样本

l2 = [3,4,7,2,9,5,1,8]

尽管如此,我似乎找不到方法来获取包含剩余元素的另一个示例列表
l3=[6,10]
(函数
sample()
不会从原始列表中删除它所获取的元素)。你能帮帮我吗?提前感谢。

对于我来说,以下代码用于将列表随机分成两个(训练/测试)集,尽管大多数机器学习库都包含前面提到的易于使用的拆分函数:

l = [1,2,3,4,5,6,7,8,9,10]
sz = len(l)
cut = int(0.8 * sz) #80% of the list
shuffled_l = random.shuffle(l)
l2 = shuffled_l[:cut] # first 80% of shuffled list
l3 = shuffled_l[cut:] # last 20% of shuffled list

你已经标记了这个机器学习。您的机器学习库可能已经包含了一个列车测试拆分功能。其中一个选项:如果您希望随机选择,请在此处查看答案:如果它们具有唯一值,则
set(l)-set(l2)
@Maria谢谢!sci工具包的功能对我帮助很大,因为这是我用于机器学习的工具;)根据文档,random.shuffle将
在适当的位置对序列x进行洗牌。。。要洗牌一个不可变序列并返回一个新的洗牌列表,请改用sample(x,k=len(x))。
-因此,要么在l上调用shuffle并使用l进行剪切,要么如果需要一个新列表,请使用sample。编写的代码将不起作用,洗牌\u l为无