Я начинаю с логического массива nxm, который определяет области - true, если он находится в области, false, если нет. Например:2D numpy array - проверить, равны ли все соседние термины
r = np.array([[ 0, 0, 1, 1, 1],
[ 0, 1, 1, 0, 0],
[ 0, 1, 1, 1, 0],
[ 1, 1, 1, 0, 0],
[ 1, 1, 0, 0, 0]])
Граница между регионами может быть определено как п-1 х м-1 массив, который будет представлять собой «точку» между каждым набором из четырех значений. Если все 4 окружающих значения одинаковы, вы не находитесь на грани между регионами. Если какое-либо из 4 значений отличается, вы. Для r выше:
l = np.array([[ 1, 1, 1, 1],
[ 1, 0, 1, 1],
[ 1, 0, 1, 1],
[ 0, 1, 1, 0]])
Любые мысли о том, как это можно сделать эффективно? Я попытался сделать diff в обоих направлениях, но это удваивается. Есть ли функция двумерного разложения? Какой-то другой способ сделать это?
Это не дает правильного результата в '[3,3]'. – tom10
Я заметил, что я это исправил. Благодаря! – farenorth
+1 с исправлением, и вопрос был бы лучше, если бы этот пример был правильным синтаксисом и проще тестировать. – tom10