我有一个n
元素的样本。我想从m
中对n
个唯一对进行子采样。在python中有一个简单的现成方法吗?
例如,如果n = [1,2,3,4,5,6,7]
和m = 3
,则这样的样本将是[(1,2,,3,4),(5,6)]
random
模块具有sample
功能,它将从集合中选择sample
个唯一项目。然后,您可以将它们配对以创建所需的输出:
n
取决于您对“随机”的确切含义,答案会有所不同!
对于唯一对的统一采样,假设您列表中的所有元素都是不同的:
import random
import itertools
data = [1,2,3,4,5,6,7,8,9,10]
m = 3
def pairwise(iterable):
# from the itertools cookbook: https://docs.python.org/3/library/itertools.html#itertools-recipes
a, b = itertools.tee(iterable)
next(b, None)
return zip(a, b)
chosen = random.sample(data, m * 2)
result = pairwise(chosen)