2017-07-04 55 views
2

我有一个100k条目的列表,并希望将它们拆分为10k混洗的批次。这个怎么做?如何在Python中形成洗牌批次?

我在sklearn找到一个函数shuffle,它的参数为n_samples。但我没有看到任何保证,这批将涵盖所有设置。

我想从整个集合中随机抽取一批,但不会重复,直到采集所有样本。这可能吗?

+0

名字'''shuffle'''告诉你它正在做什么和你的链接,别名'''重采样内(*阵列,取代= FALSE)' ''更详细''',''replace = False'''是关键字! (应该在python的随机文档或numpy的随机文档中描述)。这个函数(你链接的)更通用,因此'n_samples'''当然很重要,所以我没有看到使用Python的标准shuffle或numpy的shuffle的简单替代方法(前面的示例通过Ecir的回答)。 – sascha

回答

2

你的意思是这样的:

from random import shuffle 
def batches(entries): 
    shuffle(entries) 
    for i in range(0, len(entries), 10000): 
     yield entries[i:i+10000] 
+0

如何在实现'def __next __(self)'时使用它? – Dims

+0

@Dims对不起,我不知道我遵循:'yield'比'__next__'容易得多..? –

+0

@jsalonen不,没关系,答案被接受;这对我来说只是意想不到的方式 – Dims