使用 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]
.
我正在使用 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]
.