【问题标题】:Pick random coordinates in Numpy array based on condition根据条件在 Numpy 数组中选择随机坐标
【发布时间】:2016-09-11 05:27:25
【问题描述】:

我使用了 convolution2d 来生成一些关于局部模式条件的统计数据。完整地说,我正在处理图像,值 0.5 是我的“灰屏”,不幸的是,在此之前我不能使用蒙版(依赖于其他一些软件包)。我想在我的图像中添加新对象,但它应该与至少 75% 的非灰屏重叠。让我们假设新对象是正方形的,我在灰屏上屏蔽图像而不是其他图像,用填充 1 的 n × n 矩阵进行二维卷积,这样我就可以得到其中灰度像素数的总和修补。这一切都有效,所以我有一个矩阵,其中有合适的位置来放置我的新对象。如何有效地从这个矩阵中随机选择一个?

这是一个带有 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

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

如何有效地获得 1s 的均匀分布坐标?

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    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]]
    

    【讨论】:

    • 这太棒了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多