这样做很容易在Numpy中创建一个随机二进制数组
random_mask = np.random.randint(0,2, (r, c))
但是我真正想要的是设置数组中可以存在的最大1s。
例如,如果我想要一个5,5的二进制矩阵,我希望在整个矩阵中最多随机放置10个,其余为0。
我在想一种方法,可以像正常情况一样生成随机数组,计算当前放置的1的数量,然后以某种方式减去不需要的数。
我想知道是否有办法在numpy中做到这一点
答案 0 :(得分:1)
这是我能想到的最基本的方法:
import numpy as np
def binary_mask_random(r, c, n):
a = np.zeros((r,c)).flatten()
for i in range(np.random.randint(0, n+1)):
x = np.random.randint(0, r*c)
a[x] = 1
return a.reshape((r,c))
它将创建一个1xr*c
零数组,并在随机位置最多填充n
1
s个数组。返回一个rxc
数组。