【发布时间】:2020-02-21 21:23:04
【问题描述】:
我有一个像这样的二进制掩码:
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 中是否已经存在类似的功能?欧几里得距离和曼哈顿距离都可以。 我宁愿避免计算整个矩阵的距离(因为这在我的情况下相当大),并且只获得我的一个索引的距离。
【问题讨论】:
-
什么距离?曼哈顿?欧几里得?
-
I have an index in this array什么意思? -
你的意思类似于distance transform?
-
IIUC
For manhattan one,使用bwdist_manhattan(X)[0,5]等等。这使用cdist,因此您可以简单地更改欧几里得的距离度量。