具有固定数量的True和False值的随机布尔数组

问题描述 投票:0回答:1

我想在每一行创建一个固定数量为TrueFalse的二维数组。以下是生成TrueFalse随机数组的代码:

np.random.choice(a=[False, True], size=(N, N), p=[p, 1-p])

这段代码将给我一个N * N的数组,其中pFalse1-pTrue的概率。现在我想在每一行中设置固定数量的FalseTrue,也是随机的。我怎么能在Python中做到这一点?

以下是一些其他相关问题,但与我提出的问题不一样:

Example in C

Example in C#

Example but without specific number of True and False

编辑:我应该补充说,this链接对我也没有帮助。正如我在问题中所看到的,我想要一个随机的布尔2d数组。因此,创建一个二维数组并对其进行混洗将没有用处(shuffle不会独立地移动项目,它可以只移动列或行),因此它不是随机数组。请打开我的问题,让人们回答。

python arrays numpy random boolean
1个回答
0
投票

如果每行所需的True(或False)值是1且只有1:

# size of our array
M = 5 # rows
N = 3 # columns

# create an array full of "False"
foobar = np.full((M,N), False)

# create a list of randomly picked indices, one for each row
idx = np.random.randint(N, size=M)

# replace "False" by "True" at given indices
foobar[range(M), idx] = True

但是,这种方法不适用于每行多个True值。

© www.soinside.com 2019 - 2024. All rights reserved.