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

标签 python numpy

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

这是一个带有 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 的均匀分布坐标?

最佳答案

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

关于python - 根据条件在 Numpy 数组中选择随机坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430572/

相关文章:

python - 我收到 a += b 的 TypeError,但不是 b += a (numpy)

python - 如何在Python中向索引添加特定数字?

python - 取消 NumPy 内存映射的映射

python - 如何获得复数论证与句点的角度?

python - Matplotlib 和 Numpy 与某些 Pandas 函数的兼容性? - 需要整数

python - 评估pytorch模型: `with torch.no_grad` vs `model.eval()`

python - 按 Pandas Dataframe 中列中的条目进行分组

python - 与 epoll 的 kqueue 注销函数类似的函数是什么?

python - 如何在numpy中有效地从Nx3点云阵列获取表面点?

python-3.x - 如何在python3中导入cv2?