【发布时间】:2020-01-17 03:51:14
【问题描述】:
我有一组二进制文件...我想要的是能够从每一行中选择特定百分比的二进制文件... f.e.假设每行有 100 个,我想从第一行随机取回 20%,从第二行随机取回 10%, 40% 第 3 次,第 4 次后 30%(当然总共 100%)。
0| 00000000001000000010000000000000000000001000000100000000000000000000000000000001 ...
1| 00000000000000010000000000001000000000000100000000000000000000000000000000000000 ...
2| 00000000000000000000000000000010010000000000000000000000000000010000100000000000 ...
3| 01000000000000100000000000000000000000001000100000000000000010000000000000000000 ...
这很容易,只需在每一行上执行 random.choice(one_idxs, %) 即可。问题是 target 位数也必须为 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 ..这就是我使用索引的原因
【问题讨论】:
-
从你的描述推断,你想避免从不同行的相同索引位置挑选位吗? (不清楚你所说的重叠是什么意思,没有超过 100b...)所以使用 'random.sample()` 选择 100 个索引位置,然后对于每次绘制,使用加权分布来选择要选择的行来自。
标签: python random binary choice