使用坐标列表索引二维数组的 Pythonic 方法

Pythonic way of indexing 2d array with list of coordinates

我的坐标为 class numpy.ndarray,尺寸为 (200,2)。基本上是 regionprops.

的输出

我想索引暗淡 img.shape = (1000,1000) 的图像矩阵(也是 ndarray)。 我希望能够做类似

的事情
for prop in region:
    img[prop.coords] = 0

但是,实际情况是,它没有将坐标视为行、列对。而是将每个数字作为行号并将整行设置为 0。

我该如何解决这个问题?

我尝试重塑阵列,但这似乎也不起作用。我能想到的唯一其他想法是将这些索引转换为矩阵,其中矩阵与图像尺寸大小相同,坐标为 1,所有其他坐标值为 0。然后,使用该矩阵进行索引。但是,这似乎并不比使用 for 循环强制执行更有效率。

您必须以元组形式提供坐标才能调用基本索引:

for prop in region:
    img[tuple(prop.coords.T)] = 0
for prop in region:
    (min_row, min_col, max_row, max_col) = prop['bboxtuple']
    img[min_row:max_row, min_col:max_col] = 0