【发布时间】:2015-06-02 11:23:12
【问题描述】:
我有一个迭代器 itertools.combinations(big_matrix,50) 和 big_matrix.shape = (65,x),所以大约有 10^14 种组合。我想获得 10000 个这种组合的随机子集,也作为迭代器,以节省内存。
我尝试了 itertools 配方
def random_combination(iterable, r):
"Random selection from itertools.combinations(iterable, r)"
pool = tuple(iterable)
n = len(pool)
indices = sorted(random.sample(xrange(n), r))
return tuple(pool[i] for i in indices)
但是tuple(iterable) 创建了一个包含 10^14 个值的元组,并且该函数返回的不是迭代器而是一个数组。
random.sample不起作用,因为它无法获取itertools.combinations对象中的元素个数。
有什么办法吗?
【问题讨论】:
标签: python random iterator itertools