Python 如何基于索引过滤numpy数组?

Python 如何基于索引过滤numpy数组?,python,arrays,numpy,Python,Arrays,Numpy,我有一个正方形的numpy数组,我想从数组中心点周围的环形区域中提取值。我想根据点到中心的距离来设置环空的半径。我使用numpy.index检索了数组索引,但无法找到构造过滤器的有效方法。如果您能分享您的意见/建议,我将不胜感激 indices = numpy.indices((5, 5)) print indices [[[0 0 0 0 0] [1 1 1 1 1] [2 2 2 2 2] [3 3 3 3 3] [4 4 4 4 4]] [[0 1 2 3 4] [0 1 2 3 4]

我有一个正方形的numpy数组,我想从数组中心点周围的环形区域中提取值。我想根据点到中心的距离来设置环空的半径。我使用numpy.index检索了数组索引,但无法找到构造过滤器的有效方法。如果您能分享您的意见/建议,我将不胜感激

indices = numpy.indices((5, 5))
print indices
[[[0 0 0 0 0]
[1 1 1 1 1]
[2 2 2 2 2]
[3 3 3 3 3]
[4 4 4 4 4]]

[[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]]
现在我想提取这些点的值,这些点的索引距离中心点1,即(2,2)。

pt=(2,2)
距离=1

mask=(索引[0]-pt[0])**2+(索引[1]-pt[1])**2那么结果会是什么样子呢?@Ophion我在发布这个问题之前搜索了这个网站。但没有找到您所指的问题。谢谢你的链接。然而,下面提供的答案对我的问题给出了一个简单明了的答案,这对像我这样的非程序员来说真的很有帮助。再次感谢您以另一种方式引用类似的问题,
mask=np.hypot(*(index-pt[:,None,None])Sweet,不知道
hypot
:)查看另一个线程-这可以通过使用
ogrid
而不是
np.index
来改进,这可以节省大量时间。虽然这至少不会返回索引,但它应该为您提供一个可以添加中心的起点。@askewchan非常感谢。。它工作得很好
pt = (2, 2)
distance = 1
mask = (indices[0] - pt[0]) ** 2 + (indices[1] - pt[1]) ** 2 <= distance ** 2
result = my_array[mask]