2017-07-04 16 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