python - 如何将二进制数组打乱特定数量

标签 python arrays random shuffle

我有一个二进制数组。我想对其进行打乱处理,使 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/

相关文章:

c# - 具有固定平均值的随机数

python - 使用用户定义的主键 Django 更新数据库中的元素

javascript - 使用 Javascript 使用 indexof value 返回第二个数组中的值

python - 在 python 中创建一个没有 aubarrays 作为参数传递的子数组

arrays - 在 scala 中,如何获取两个数组中从未显示的元素的数量?

javascript - 尝试在 jQuery 中随机化新闻滚动条间隔

c++ - 生成随机体育比赛结果c++

python - 在 OpenCV Python 中编写超过 4 个 channel 的图像

python - 使用循环更改二维列表中的多个值

python - 循环期间释放内存