【发布时间】:2021-05-17 19:31:14
【问题描述】:
对于我的代码,我有一个大的(最多 40,000 个)类概率向量。这组类概率也需要定期重新加权,因此假设它会在每次调用代码时发生变化。向量总和为 1。我需要有效地搜索与该概率对应的索引。
作为一个例子 - 假设向量是[0.25, 0.25, 0.25, 0.25],4 个对象的均匀概率。我的概率结果是 0.67。这对应于索引 3,因为 0.67 > sum(probvec[0:1]) 但 0.67 <= sum(probvec[0:2])。
我愿意更改概率向量以使其成为运行总和,即[0.25, 0.5, 0.75, 1],不过我还需要关于如何执行更新的建议。
任何帮助将不胜感激。
【问题讨论】:
-
我倾向于存储累积总和,您可以通过仅在项目 k 更改时更新总和 k 到 n 来更有效地更新(通过将项目 k 中的更改添加到之后的每个项目) .您实际上不需要对累积和进行归一化,因为您可以在 (0, final sum) 而不是 (0, 1) 中生成一个随机数,然后按照 horcrux 的建议进行二进制搜索。
标签: python python-3.x numpy probability