我有一个二进制数组。我想对其进行打乱处理,使 n% 的随机元素留在同一位置,其余的则进行打乱处理。另一种说法是,我有一个二进制数组,我想创建第二个长度相同的数组,并且与使用 difflib 的第一个数组相比 n 相似
我正在使用
随机随机播放
打乱数组,但找不到有关我问题的百分比部分的信息。
import random
array = [1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0]
random.shuffle(array)
print(array)
最佳答案
如果您对使用 numpy 持开放态度,则可以创建一个 bool 掩码来拉取 arr 的大约 n 分数,打乱拉取的样本,然后将打乱的结果放回掩码位置。
import numpy as np
n = 0.2
arr = np.array([1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0])
# create boolean mask of about fraction n
ix = np.random.choice([True, False], size=arr.size, replace=True, p=[n, 1-n])
# pull the masked portion and shuffle
arr_shuff = arr[ix]
np.random.shuffle(arr_shuff)
# reinsert
arr[ix] = arr_shuff
arr
# returns:
array([1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])
关于python - 如何将二进制数组打乱特定数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57632008/