私はこのようなnumpy配列を持っています:
x = np.array([[1,2,3],[4,5,6],[7,8,9]])
次の入力パラメーターを使用して、関数を「ネイバー」と呼びましょう。
- x:ずんぐりした2次元配列
- (i、j):2次元配列内の要素のインデックス
- d:近傍半径
i,j
出力として、指定された距離のセルの近傍を取得したいと思いd
ます。だから私が走れば
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
どうすればこれを改善できますか?