我有一系列二进制文件...我想要的是能够从每一行中选择特定百分比的二进制文件... f.e.假设每行有100个,我想从第一行中随机取回20%,从第二行中取回10%, 第三名40%,第四名30%(总计100%)。
0| 00000000001000000010000000000000000000001000000100000000000000000000000000000001 ...
1| 00000000000000010000000000001000000000000100000000000000000000000000000000000000 ...
2| 00000000000000000000000000000010010000000000000000000000000000010000100000000000 ...
3| 01000000000000100000000000000000000000001000100000000000000010000000000000000000 ...
这很容易,只需对每一行执行random.choice(one_idxs,%)。问题是目标的位数也必须是100。 即如果某些位重叠并且随机选择将其选中,则总数将不同于100位。
在每行上加上它应该尝试选择至少以前没有选择的位!
任何想法
例如我在简单情况下使用的代码((不考虑所选索引是否在行中重复,仅在一行中重复):
for every row :
ones_count = 100
bits_cnt = int(ones_count * probs[i])
idxs = array.get_row(i).one_idxs()
selected = np.random.choice(idxs,size=bits_cnt,replace=False)
我只需要选择Ones ..那就是为什么我使用索引