【问题标题】:How to efficiently calculate distance to nearest 1 in mask in numpy?如何在numpy中有效地计算到掩码中最近1的距离?
【发布时间】:2012-03-12 15:22:40
【问题描述】:

在 numpy 中,我有一个 1 和 0 的二维数组。我需要计算一个新数组(相同维度),其中每个元素包含距掩码数组中对应点最近的 1 的距离。

例如

a=np.array(
[[1,1,0],
[1,0,0],
[1,0,0]])

我需要 b 看起来像这样:

array([[0,0,1],
       [0,1,1.41],
       [0,1,2]])

PS。我将在非常大的数组上执行此操作,因此效率越高越好! 谢谢!

【问题讨论】:

    标签: python algorithm numpy scipy


    【解决方案1】:

    您正在寻找相当于 MATLAB 的 bwdist ;查看this SO question 了解更多详情。简短的回答是使用scipy.ndimage.morphology.distance_transform_edt

    【讨论】:

    • 太好了-谢谢!这很好用。为了完整起见,有效的代码是 b=scipy.ndimage.morphology.distance_transform_edt(1-a)
    猜你喜欢
    • 2021-12-27
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2021-03-31
    • 2017-06-22
    • 2014-07-21
    相关资源
    最近更新 更多