【问题标题】:How to solve ValueError: Sample larger than population or is negative without updating the list size in Python?如何解决ValueError:样本大于总体或为负而不更新Python中的列表大小?
【发布时间】:2020-03-31 05:02:56
【问题描述】:

我有一个颜色名称列表,共有 36 个颜色名称,如下所示-

MAIN_COLORS = ['darkolivegreen', 'darkseagreen', 'darkorange', 'darkslategrey', 'darkturquoise', 'darkgreen', 'darkviolet', 'darkgray', 'darkmagenta', 'darkblue', 'darkkhaki','darkcyan', 'darkred',  'darksalmon', 'darkslategray', 'darkgoldenrod', 'darkgrey', 'darkslateblue', 'darkorchid','skyblue','yellow','orange','red','pink','violet','green','brown','gold','Olive','Maroon', 'blue', 'cyan', 'black','olivedrab', 'lightcyan', 'silver']

我有一个 classes.txt 文件,共有 459 个标签。

现在当我运行下面的代码 sn-p-

try:
with open('classes.txt','r') as cls:
    classes = cls.readlines()
classes = [cls.strip() for cls in classes]
except IOError as io:
  print("[ERROR] Please create classes.txt and put your all classes")
  sys.exit(1)
COLORS = random.sample(set(MAIN_COLORS), len(classes))

我遇到了错误-

Traceback(最近一次调用最后一次): 文件“D:/Projects/YoloV3_Annotation_Tool-master/YoloV3_Annotation_Tool-master/main.py”,第 42 行,在 颜色 = random.sample(set(MAIN_COLORS), len(classes)) 样本中的文件“C:\Users\prateek.g\AppData\Local\Continuum\anaconda3\envs\myNewEnv\lib\random.py”,第 321 行 raise ValueError("样本大于总体或为负") ValueError:样本大于总体或为负数

从错误中我了解到我需要增加列表中的颜色名称,但添加颜色似乎很困难,因为类中的标签数量可能会增加。

那么有什么办法可以解决这个问题吗?请提出建议。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    您可以根据需要多次将 MAIN_COLORS 列表添加到自身,从而扩展您的 MAIN_COLORS 列表。

    例如:

    while len(MAIN_COLORS)<len(classes):
        MAIN_COLORS = MAIN_COLORS + MAIN COLORS
    

    但是它会在您的列表中创建重复值,并且您在代码中使用了 set(),因此无论您复制列表多少次,set() 都会将其大小减小到 main。

    【讨论】:

    • 是的,你是对的。我也是这么想的。只是希望会有更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2016-02-11
    • 2015-06-27
    • 2014-01-18
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多