Skip to main content
 首页 » 编程设计

python之我可以用 Numpy 制作随机面具吗

2025年05月04日14开发

我正在使用 Python 进行图像处理。

我正在尝试从图像中随机提取一些像素。

用Numpy做随机mask是不可能的吗?

我现在想的是让10000行数组中的1000个元素为True,其他都为False,是否可以实现?

另外,如果不可能,有没有其他方法可以制作随机面具? 谢谢。

请您参考如下方法:

创建一个 False 值数组,将前 1000 元素设置为 True:

a = np.full(10000, False) 
a[:1000] = True 

然后简单地打乱数组

np.random.shuffle(a) 

对于稍微快一点的解决方案,您还可以创建一个整数零数组,将一些值设置为 1,洗牌并将其转换为 bool:

a = np.zeros(10000, dtype=int) 
a[:1000] = 1 
np.random.shuffle(a) 
a = a.astype(bool) 

在这两种情况下,您都会得到一个数组 a,其中 在随机位置正好有 1000 个 True 元素。

如果您希望从 [True, False] 中单独挑选每个元素,您可以使用

np.random.choice([True, False], size=10000, p=[0.1, 0.9]) 

但请注意,您无法预测数组中 True 元素的数量。您只会知道平均您将拥有 1000 个。