Я хочу найти список точек, которые находятся в пределах диапазона 1 (или точно диагонали) от точки в моей матовой матрице :
Например, скажите, что моя матрица m
:
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 1 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
Я хотел бы получить список кортежей или что-то, представляющее все координаты 9 точек с X ниже:
[[0 0 0 0 0]
[0 X X X 0]
[0 X X X 0]
[0 X X X 0]
[0 0 0 0 0]]
Вот еще один пример с целевой точкойна краю:
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 1]
[0 0 0 0 0]
[0 0 0 0 0]]
В этом случае на расстоянии 1 от целевой точки будет только 6 точек:
[[0 0 0 0 0]
[0 0 0 X X]
[0 0 0 X X]
[0 0 0 X X]
[0 0 0 0 0]]
РЕДАКТИРОВАТЬ:
Использование ответа / комментария Дэвида Херринга о чебышевском расстоянии. Вот моя попытка решить пример 2 выше, предполагая, что я знаю координаты целевой точки:
from scipy.spatial import distance
point = [2, 4]
valid_points = []
for x in range(5):
for y in range(5):
if(distance.chebyshev(point, [x,y]) <= 1):
valid_points.append([x,y])
print(valid_points) # [[1, 3], [1, 4], [2, 3], [2, 4], [3, 3], [3, 4]]
Это кажется немного неэффективным для большегомассив, так как мне нужно проверить только небольшой набор ячеек, а не весь мартикс.