【发布时间】:2012-06-15 08:12:10
【问题描述】:
我有一个像这样的 numpy 数组:
x = np.array([[1,2,3],[4,5,6],[7,8,9]])
我需要创建一个函数,我们称之为“邻居”,输入参数如下:
- x: 一个 numpy 二维数组
- (i,j):二维数组中元素的索引
- d:邻域半径
作为输出,我想获得具有给定距离d 的单元格i,j 的邻居。
所以如果我运行
neighbors(im, i, j, d=1) with i = 1 and j = 1 (element value = 5)
我应该得到以下值的索引:[1,2,3,4,6,7,8,9]。我希望我说清楚。
有没有像 scipy 这样的库来处理这个问题?
我已经做了一些工作,但这是一个粗略的解决方案。
def pixel_neighbours(self, p):
rows, cols = self.im.shape
i, j = p[0], p[1]
rmin = i - 1 if i - 1 >= 0 else 0
rmax = i + 1 if i + 1 < rows else i
cmin = j - 1 if j - 1 >= 0 else 0
cmax = j + 1 if j + 1 < cols else j
neighbours = []
for x in xrange(rmin, rmax + 1):
for y in xrange(cmin, cmax + 1):
neighbours.append([x, y])
neighbours.remove([p[0], p[1]])
return neighbours
我该如何改进?
【问题讨论】:
标签: python numpy computer-vision scipy nearest-neighbor