我想从图表中随机选择n个样本。为此,我使用random.sample函数创建一个名为X的列表,如下所示:
X= random.sample(range(graph.ecount()), numPosSamples)
问题是当numPosSamples等于graph.ecount()时,我收到以下错误:
ValueError: Sample larger than population
任何帮助将不胜感激。感谢
答案 0 :(得分:1)
我不确定numPosSamples
是如何获得它的价值的,但是因为random.sample
在没有替换的情况下对进行抽样,所以这里可能发生的是numPosSamples
大于图表中的边数。因此,Python会引发您所看到的ValueError
。
将样本数减少到小于边数,或者使用允许替换的采样方法,例如random.choice
的列表推导。< / p>
答案 1 :(得分:0)
您可以添加一些逻辑来检测您的列表是否短于您想要的样本数。
例如:
a = list(range(10))
num_samples = 20
sample(a, num_samples if len(a) > num_samples else len(a))