如何获取numpy数组中只有一项的坐标

时间:2018-12-15 18:43:34

标签: python numpy

这是我的代码。我不想获得像素值低于210的所有坐标,因为我想对它们执行一些操作,并可能根据操作结果调整条件。

filename = "/home/User/PycharmProjects/Test/files/1366-000082.png"

image = Image.open(filename)

image_data = np.asarray(image, dtype='int64')

def get_image_data():
     for row in image_data:
         for cell in row:
             if condition:
                 # I need only coordinate of cell here

所以我再次意识到argwhere函数。但这只会让我得到所有坐标。但是我可能想在循环中的某个位置更改该条件。

这有可能吗?

否则,我必须使用Pillow,但是循环会慢10倍。

2 个答案:

答案 0 :(得分:1)

您可以使用enumerate()获取值索引:

arrows

,也许您应该将image_data传递给get_image_data方法

答案 1 :(得分:0)

您看过用口罩吗?就像使用numpy数组的内置函数一样,它将使您的生活变得更加简单和快捷,而不必遍历整个过程。

以您为例:

A = np.random.randint(1, 500, (100,100)) Mask = A < 210

这将为您提供一个True / False值矩阵,您实际上可以根据需要查询和调整条目。我知道您不想处理所有坐标,但这比遍历像素值要快得多。

希望对您有帮助