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

时间:2019-02-25 22:13:56

标签: python arrays numpy random boolean

我想创建一个二维数组,每行中固定数量为JArray reader = JArray.Parse(json); List<string> returnList = new List<string>(); foreach(var token in reader){ string path = token["path"].ToString(); if(path.Contains(key)){ returnList.Add(path); } } True。这是生成FalseTrue的随机数组的代码:

False

此代码将为我提供N * N的数组,其中np.random.choice(a=[False, True], size=(N, N), p=[p, 1-p]) 的概率为pFalse的概率为1-p。现在,我想在每行中设置固定数量的TrueFalse,并且也可以随机设置。如何在Python中做到这一点?

还有一些其他相关问题,但与我要问的问题不同:

Example in C

Example in C#

Example but without specific number of True and False

编辑: 我还应该补充一点,this链接对我也没有帮助。从我的问题中可以看出,我想要一个随机的布尔2d数组。因此创建2d数组并将其改组将无济于事(改组不会独立地对项目进行改组,它只能移动列或行),因此它不是随机数组。请打开我的问题,让人们回答。

1 个答案:

答案 0 :(得分:0)

如果每行的True(或False)值的期望数量为一个且只有一个

# 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值那样工作。