索引numpy索引,如带有2D点列表的数组

时间:2018-01-18 17:20:44

标签: python numpy indexing image-registration

我正在使用python 2.7

我有一个由

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

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

我有一个布尔形状的面具(20,20)

我需要一个与掩码中标记为true的ID对应的id列表。

我试图通过mid = ids [:,mask] .T来做这个,这给我一个这种类型的列表

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

等等。它们保存在名为mid

的数组中

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

anotherarray([2,17])

我还没有设法将mid的列表以花哨的索引方式使用它们,有人可以帮助我吗?

我有

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

它不起作用。我也有

anotherarray[tuple(mid)]

并且它不起作用

编辑(如果您关心上下文,则只读) :我想添加上下文以显示我认为我需要额外索引的原因。也许我不是,这就是我想要的结果,以提高效率。

这是一个注册问题,简单的问题。我有两张照片。参考和浮动如下所示。参考左边,并浮动到右边。

Reference image Floating image

参考图像和浮动图像位于不同的坐标空间中。我在图像中可以看到标记的点。我发现了彼此之间的仿射变换。

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

在参考空间中,我发现在区域内找到了哪些像素,它们成为mask数组,包含内部像素和外部像素的信息。

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

一旦我得到了这些点,我就将它们转换回浮动空间,在那些新指数中我需要寻找强度。这些强度是那些将在相应指数中写回参考文献的强度。这就是为什么我认为我需要在参考空间和浮动空间中都有这些点的索引,以及图像的强度。另一个图像是anotherarray,我只需要转换的蒙版像素。

所以你去了,如果你关心它就是解释。感谢您阅读和回答。

1 个答案:

答案 0 :(得分:1)

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