根据条件在Numpy数组中随机选择坐标

5
我使用了convolution2d来生成关于本地图案条件的一些统计数据。完整起见,我正在处理图像,值0.5是我的“灰屏”,不幸的是,在此之前我不能使用掩码(依赖于其他一些软件包)。我想在我的图像中添加新对象,但它应该至少覆盖75%的非灰屏区域。假设新对象是正方形的,我将图像遮罩在灰屏与其余部分上,使用一个n乘n矩阵填充1进行2D卷积,以便我可以获得该补丁中灰度像素数量的总和。这一切都有效,所以我有一个适合放置新对象的矩阵。如何有效地从该矩阵中随机选择一个?
这里有一个小例子,其中有一个5x5的图像和一个2x2的卷积矩阵,我想要最后一个矩阵中具有1的随机坐标(因为该补丁中最多只有1个0.5)
图像:
1    0.5  0.5  0    1
0.5  0.5  0    1    1
0.5  0.5  1    1    0.5
0.5  1    0    0    1
1    1    0    0    1

卷积矩阵:

1    1 
1    1 

复杂的图像:

3    3    1    0
4    2    0    1
3    1    0    1
1    0    0    0

在条件小于等于1的情况下:

0    0    1    1
0    0    1    1
0    1    1    1
1    1    1    1

如何高效地获得1的坐标的均匀分布?
1个回答

12

np.wherenp.random.randint 应该能解决问题:

#we grab the indexes of the ones
x,y = np.where(convoluted_image <=1)
#we chose one index randomly
i = np.random.randint(len(x))
random_pos = [x[i],y[i]]

这太棒了。 - mLstudent33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接