我想在每一行创建一个固定数量为True
和False
的二维数组。以下是生成True
和False
随机数组的代码:
np.random.choice(a=[False, True], size=(N, N), p=[p, 1-p])
这段代码将给我一个N * N的数组,其中p
的False
和1-p
的True
的概率。现在我想在每一行中设置固定数量的False
和True
,也是随机的。我怎么能在Python中做到这一点?
以下是一些其他相关问题,但与我提出的问题不一样:
Example but without specific number of True and False
编辑:我应该补充说,this链接对我也没有帮助。正如我在问题中所看到的,我想要一个随机的布尔2d数组。因此,创建一个二维数组并对其进行混洗将没有用处(shuffle不会独立地移动项目,它可以只移动列或行),因此它不是随机数组。请打开我的问题,让人们回答。
如果每行所需的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
值。