我正在使用 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 个。
