如何解决选择按值加权的行索引
权重字典:result <- Filter(function(x) image_variance(x) > 800,images)
(值为 1 的项目被选中的概率为 10%,值为 2 的项目为 90%)
示例值行:{1:0.1,2:0.9}
(只有 0 和字典中包含的值)
输出应该是一个随机选择的索引
对于示例行,该行中每个项目的索引被选中的概率应为 [0,1,2,1]
(注意,由于该行包含两个不同的 [0,0.05,0.9,0.05]
元素,因此每个元素都应具有被选中的概率为 0.05,因为权重计入具有该值被选中的项目)
解决方法
您可以在此处使用 np.select
。
wt = {1:0.1,2:0.9}
a = np.array([0,1,2,1])
choicelist = [a==i for i in wt.keys()]
condlist = [v/np.count_nonzero(a==k) for k,v in wt.items()]
np.select(choicelist,condlist)
# array([0.,0.,0.05,0.9,0.05])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。