如何有效地计算numpy中面具中距离最近1的距离?

Pet*_*e W 5 python algorithm numpy scipy

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

例如

a=np.array(
[[1,1,0],
[1,0,0],
[1,0,0]])
Run Code Online (Sandbox Code Playgroud)

我需要b看起来像这样:

array([[0,0,1],
       [0,1,1.41],
       [0,1,2]])
Run Code Online (Sandbox Code Playgroud)

PS.我将在非常大的阵列上执行此操作,因此效率越高越好!谢谢!

Jac*_*cob 10

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

  • 十分感谢!这很好用.为了完整性,有效的代码是b = scipy.ndimage.morphology.distance_transform_edt(1-a) (3认同)