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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以用Numpy制作随机面具吗?相关的知识,希望对你有一定的参考价值。

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

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

用Numpy制作随机面具是不可能的吗?

我现在想的是将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个。

另一答案
In [7]: import numpy as np 

In [8]: mask=np.array( [False]*10000)

In [9]: inds=np.random.choice(np.arange(10000),size=1000)

In [10]: mask[inds]=True

现在你的面具的前100个元素是

In [11]: print(mask[:100])
[False False False False False  True False False False False False False
 False False False False False False False False False False  True False
 False False False False False False False  True  True False  True False
 False False False False False False False False False False  True False
 True False False False False False False False False False False False
 False False False False False False  True False False False False False
 False False  True False False False False False False False False False
 False False  True False False False False False False False False False
 False False False False]

以上是关于我可以用Numpy制作随机面具吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何设计一个可以电脑随机抽奖程序

我可以在 android studio 的片段上使用 Firebase 吗?

如何创建片段以重复变量编号中的代码行

用随机数替换条件下的numpy数组值

有人可以帮我使用我的随机代码生成器吗? [关闭]

一致地创建相同的随机 numpy 数组