Python 如何测量numpy数组中与局部最小值的距离?
我用scikit.形态学在二维阵列上进行腐蚀。我还需要确定每个单元到侵蚀中确定的最小值的距离 例如:Python 如何测量numpy数组中与局部最小值的距离?,python,scikit-learn,scikit-image,Python,Scikit Learn,Scikit Image,我用scikit.形态学在二维阵列上进行腐蚀。我还需要确定每个单元到侵蚀中确定的最小值的距离 例如: np.reshape(np.arange(1,126,step=5),[5,5]) array([[ 1, 6, 11, 16, 21], [ 26, 31, 36, 41, 46], [ 51, 56, 61, 66, 71], [ 76, 81, 86, 91, 96], [101, 106, 111
np.reshape(np.arange(1,126,step=5),[5,5])
array([[ 1, 6, 11, 16, 21],
[ 26, 31, 36, 41, 46],
[ 51, 56, 61, 66, 71],
[ 76, 81, 86, 91, 96],
[101, 106, 111, 116, 121]])
erosion(np.reshape(np.arange(1,126,step=5),[5,5]),selem=disk(3))
array([[ 1, 1, 1, 1, 6],
[ 1, 1, 1, 6, 11],
[ 1, 1, 1, 6, 11],
[ 1, 6, 11, 16, 21],
[26, 31, 36, 41, 46]])
现在,我要做的是返回一个数组,该数组使距离最小,如下所示:
array([[ 0, 1, 2, 3, 3],
[ 1, 1, 2, 3, 3],
[ 2, 2, 3, 3, 3],
[ 3, 3, 3, 3, 3],
[ 3, 3, 3, 3, 3]])
是否有scikit工具可以做到这一点?如果没有,有没有关于如何有效实现此结果的提示?您可以使用,然后使用SciPy来返回这些值:
将numpy导入为np
从撇渣。形态导入侵蚀,圆盘
从scipy导入ndi图像作为ndi
输入=np.重塑(np.arange(1126,步骤=5),[5,5])
封装外形=磁盘(3)
def距离_至_最小值(值、距离_值):
d=np.inf
最小值=np.inf
对于范围内的i(len(值)):
if值[i]如何计算最后一个数组?
input:
[[ 1 6 11 16 21]
[ 26 31 36 41 46]
[ 51 56 61 66 71]
[ 76 81 86 91 96]
[101 106 111 116 121]]
footprint:
[[0 0 0 1 0 0 0]
[0 1 1 1 1 1 0]
[0 1 1 1 1 1 0]
[1 1 1 1 1 1 1]
[0 1 1 1 1 1 0]
[0 1 1 1 1 1 0]
[0 0 0 1 0 0 0]]
distance_footprint:
[[0 0 0 3 0 0 0]
[0 4 3 2 3 4 0]
[0 3 2 1 2 3 0]
[3 2 1 0 1 2 3]
[0 3 2 1 2 3 0]
[0 4 3 2 3 4 0]
[0 0 0 3 0 0 0]]
output:
[[0. 1. 2. 3. 3.]
[1. 2. 3. 3. 3.]
[2. 3. 4. 4. 4.]
[3. 3. 3. 3. 3.]
[3. 3. 3. 3. 3.]]
input:
[[ 1 6 11 16 21]
[ 26 31 36 41 46]
[ 51 56 61 66 71]
[ 76 81 86 91 96]
[101 106 111 116 121]]
output:
[[0 1 2 3 3]
[1 2 3 3 3]
[2 3 4 4 4]
[3 3 3 3 3]
[3 3 3 3 3]]