使用 2D 点列表索引 numpy 索引,如数组

Indexing numpy indices like array with list of 2D points

我正在使用 python 2.7

我有一个由

创建的索引数组
ids=np.indices((20,20))

ids[0] 填充了所有的垂直坐标和 ids1 填充所有横坐标 ids 的形状为 (2,20,20)

我有一个形状为 (20,20) 的布尔掩码

我需要一个 id 列表,这些 id 对应于掩码中标记为 true 的那些。

我正在尝试通过 mid=ids[:,mask].T 来执行此操作,它为我提供了此类列表

[2,17] [4,6] [1,19] [18,4]

等等。它们保存在一个名为 mid

的数组中

然后,我需要中间的所有坐标才能在另一个数组中找到值。意思是我需要

另一个数组([2,17])

我还没有设法获取 mid 的列表以一种奇特的索引方式使用它们,有人可以帮助我吗?

我有

anotherarray[mid[0],mid[1]]

它不起作用。我也有

anotherarray[tuple(mid)]

它不起作用

编辑(只在您关心上下文时阅读):我想添加上下文以说明为什么我认为我需要额外的索引。也许我不知道,这就是我想要提高效率的方法。

这是一个注册问题,很简单。我有两个图像。参考和浮动如下所示。向左引用,向右浮动。

参考图像和浮动图像在不同的坐标spaces。正如您在图片中看到的那样,我标记了要点。我发现彼此之间存在仿射变换。

由线划定的区域是我感兴趣的区域。我将浮动 space 中该区域的坐标发送到参考 space.

在参考文献 space 中,我找到了区域内的像素,它们变成了 mask 数组,包含了内部和外部像素的信息。

但我只关心里面的那些,所以我只想要参考 space 中掩码内那些像素的索引,并使用 mid=ids[:,mask] 保存它们。

获得这些点后,我将它们转换回浮动 space,并且在这些新索引中我需要寻找强度。这些强度是将在其相应索引的参考中写回的强度。这就是为什么我认为我需要在参考和浮动 space 中都有这些点的索引,以及图像的强度。另一张图片是 anotherarray,我只想从中转换蒙版像素。

所以你去吧,如果你关心的话,这就是解释。感谢您的阅读和回答。

一些提示:您可以使用 np.argwhere(mask) 直接从掩码中获取 mid。可能更方便您的目的是 np.where ,您可以像 mi, mj = np.where(mask) 那样使用,然后 anotherarray[mi, mj].