在二维数组中随机放置n个元素

2024-04-29 20:05:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个布尔或二进制numpy数组大小(m,m),其中n真值随机分散。我试着做一个随机的格子图案。我将有一个5x5数组,上面有3个真值,并且只在这些点采样。
使用随机选择我有时会得到大于或小于3所需的真值。在

for x in range(0,25):
    x = np.random.choice([True,False], p=[0.15,0.85])

Tags: innumpyfalsetruefornp二进制range
2条回答

您可以将^{}与可选参数replace设置为False一起使用,以便在使用^{}和{a3}的0到{}之间的id设置为zeros初始化{}数组中的{}。因此,实现将如下所示-

m = 5; n = 3;
out = np.zeros((m,m),dtype=bool)
np.put(out,np.random.choice(range(m*m), n, replace=False),1)

样本运行-

^{pr2}$

因为这是linear indexing的情况,在最后一步,您还可以-

out.ravel()[np.random.choice(range(m*m), n, replace=False)] = 1

你可以用shuffle直接完成:

n = 3; m = 5
x = [True] * n + [False] * (m * m - n)
np.random.shuffle(x)
result = np.mat(x).reshape(m, m)

相关问题 更多 >