在python数组中查找值的X和Y坐标

时间:2015-04-04 21:14:59

标签: python arrays numpy

我试图在numpy图像数组中获取给定值的x和y坐标。

我可以通过使用for语句手动运行行和列来实现,但这似乎相当慢,我可能有更好的方法来执行此操作。

我试图修改我在这篇文章中找到的解决方案。 Finding the (x,y) indexes of specific (R,G,B) color values from images stored in NumPy ndarrays

a = image
c = intensity_value

y_locs = np.where(np.all(a == c, axis=0))
x_locs = np.where(np.all(a == c, axis=1))

return np.int64(x_locs), np.int64(y_locs)

我有np.int64将值转换回int64。

我也在看numpy.where documentation

1 个答案:

答案 0 :(得分:1)

我不太明白这个问题。 all()中的轴参数在颜色通道(轴2-1)上运行,而不是xy索引。然后where()将为您提供图像中匹配值的坐标:

>>> # set up data
>>> image = np.zeros((5, 4, 3), dtype=np.int)
>>> image[2, 1, :] = [7, 6, 5]
>>> # find indices
>>> np.where(np.all(image == [7, 6, 5], axis=-1))
(array([2]), array([1]))
>>>

这只是重复你链接的答案。但评论有点太长了。也许你可以解释为什么你需要修改以前的答案?它似乎并不像你需要的那样。