使用坐标列表索引二维数组的 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
我的坐标为 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