【问题标题】:ValueError: Sample larger than population selecting samples from graphValueError:样本大于从图中选择样本的总体
【发布时间】:2015-06-27 22:00:17
【问题描述】:

我正在尝试从图表中随机选择 n 个样本。为此,我使用如下所示的 random.sample 函数创建了一个名为 X 的列表:

X= random.sample(range(graph.ecount()), numPosSamples)

问题是当 numPosSamples 等于 graph.ecount() 我收到以下错误:

ValueError: Sample larger than population

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: python random sample


    【解决方案1】:

    您可以添加一些逻辑来检测您的列表是否短于您想要的样本数。

    例如:

    a = list(range(10))
    num_samples = 20
    sample(a, num_samples if len(a) > num_samples else len(a))
    

    【讨论】:

    • 这个可以简化为sample(a, min(num_samples, len(a)))
    【解决方案2】:

    我不确定numPosSamples 是如何获得它的价值的,但是因为random.sample 没有进行采样 替换,所以这里可能发生的情况是numPosSamples 大于图中的边。因此,Python 会引发您所看到的 ValueError

    要么将样本数量减少到少于边的数量,要么使用允许with替换进行抽样的抽样方法,例如random.choice 的列表推导。

    【讨论】:

    • 你是对的。我在传递示例函数的第一个参数时犯了一个错误。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2016-02-11
    • 2021-10-24
    • 2012-11-13
    • 2020-03-31
    相关资源
    最近更新 更多