Я работаю с трехмерными логическими массивами, которые маскируют объем. Моя цель - взять маску и уменьшить площадь маски на некоторый запас, м, во всех измерениях.
Есть ли простой способ сделать это с помощью некоторых распространенных библиотек (numpy, scipy, pandas и т. Д.)?
Я нашел в сети некоторый код , который использует несколько циклов for для расширения маски на одно измерение. Это работает для случая расширения, но я чувствую, что есть более компактный выход.
Вот минимальный пример того, что я ищу в 2D.
Оригинал
array([[0., 0., 1., 0., 0.],
[0., 1., 1., 1., 0.],
[1., 1., 1., 1., 1.],
[0., 1., 1., 1., 0.],
[0., 0., 1., 0., 0.]])
Равномерное уменьшение на 1 пиксель
array([[0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 1., 1., 1., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0.]])
Но я хочу, чтобы это было в трехмерном пространстве. Спасибо за любой вклад.