У меня есть двоичная маска, подобная этой:
X = [[0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 1, 1],
[0, 0, 0, 1, 1, 1],
[0, 0, 1, 1, 1, 1],
[0, 0, 1, 1, 1, 1],
[0, 0, 0, 1, 1, 1]]
У меня есть определенный индекс в этом массиве, и я хочу вычислить расстояние от этого индекса до ближайшего 1
в маске. Если в этом индексе уже есть 1
, расстояние должно быть равно нулю. Примеры (с учетом расстояния до Манхэттена):
distance(X, idx=(0, 5)) == 0 # already is a 1 -> distance is zero
distance(X, idx=(1, 2)) == 2 # second row, third column
distance(X, idx=(0, 0)) == 5 # upper left corner
Существует ли уже такая функциональность в Python / NumPy / SciPy? И евклидово, и манхэттенское расстояние вполне подойдут. Я бы предпочел избегать вычисления расстояний для всей матрицы (поскольку в моем случае это довольно большое значение) и получать только расстояние для моего единственного индекса.