假设我有3个盒子和3个动物,我想根据它们各自的分布创建一个盒子数组,每个盒子包含1个动物:
animals = ["Cat", "Dog", "Bunny"]
boxes = []
其中概率由
"Cat" "Dog" "Bunny"
Box 1 0.3 0.4 0.3
Box 2 0.2 0.3 0.5
Box 3 0.5 0.3 0.2
如何填充框数组,使第一个元素在概率0.3时等于“猫”,在概率0.4时等于“狗”,在概率0.3时等于“兔子”,第二个元素在概率0.2时等于“猫”,在概率0.3时等于“狗”,以此类推
另外,假设第一个元素/框是“Cat”。看看第二个和第三个方框,我们不能有一个概率>;再次更改第一个框的0,因为它已填充了一只猫。我们也不能有一个概率>;第二个包含cat的框的0再次出现,因为它已在框1中
通过将剩余的行/列缩放到1,但它们的比例仍然相同,是否可以负责任地解决此问题?例如,如果盒子1是一只猫,那么我们将得到
"Cat" "Dog" "Bunny"
Box 1 1 0 0
Box 2 0 0.4 0.6
Box 3 0 0.6 0.4
您可以使用random.choices。它会自动为所选内容加权:
我很清楚,这不是一个特别干净、可扩展的解决问题的方法,但它在某种程度上解决了这个问题
编辑:这是一个带有numpy数组的新版本
相关问题 更多 >
编程相关推荐