Я хочу получить все соседние значения np.array.
Массив выглядит так:
x = np.array([ [1, 2, 3, 4 ],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16] ])
Что у меня есть:
i = 2
j = 2
n = x[i,j-1], x[i,j], x[i,j+1], x[i-1,j], x[i+1,j], x[i-1,j-1], x[i+1,j+1], x[i+1,j-1], x[i-1,j+1]
Это возвращает (что я хочу)
(10, 11, 12, 7, 15, 6, 16, 14, 8)
Но также есть ошибки, например, когда я хочу значения соседей
i = 3
j = 3
Это дает:
Exception has occurred: IndexError
index 4 is out of bounds for axis 1 with size 4
Другая душа:
def find_neighbors(m, i, j, dist=1):
return [row[max(0, j-dist):j+dist+1] for row in m[max(0,-1):i+dist+1]]
и
n = find_neighbors(x, i, j)
Что дает мне массив соседей, но также дает мне не все соседки, когда я устанавливаю
i = 0
j = 0
потому что это только дает мне:
[array([1, 2]), array([5, 6])]
У кого-нибудь есть решение для этого?
Спасибо!