我使用random.sample来采样所有可能的数据集组合(约150集)。我将测试的样本量为3,4和5,数据集范围为2到20个项目。
每个数据点都是一个字符串,例如'101A'。我只是将随机采样循环1000次并将这些点存储为有序的连接字符串以取消重复。 e.g。
d['2-101a-124'] = 0
然后提取数据然后用'-'s分割数据。有没有更好的方法呢?限制随机抽样以获得所有组合的次数?
编辑:为了澄清,我需要列表的所有可能组合,即
dataset = ['1','2','3A','4']
当采样3个数据点时,我需要所有组合,如:
combination 1 = ['1','2','3A']
combination 2 = ['2','3A','4']
combination 3 = ['1','3A','4']
combination 4 = ['1','2','4']
答案 0 :(得分:5)
没有使用标准库?
>>> import itertools
>>> dataset = ['1','2','3A','4']
>>> list(itertools.combinations(dataset, 3))
[('1', '2', '3A'), ('1', '2', '4'), ('1', '3A', '4'), ('2', '3A', '4')]
答案 1 :(得分:0)
如果您可以枚举所有组合并将它们放在列表中
a = [ list of all combinations ]
然后您可以shuffle
将它们按随机顺序放置
random.shuffle(a)
这样你就可以从原版中获得1个。我不是100%肯定我会遵循目标,所以也许这不是你想要的。