我正在使用一个rasterio光栅,我已经'读'到python中,所以它现在是一个numpy数组。np数组的外边缘全是零,内部全是1,除了中间的1偶尔是零,参见下面的示例数组。我想把所有的零都留在数组的外部(即,保持它们为零),但是想要转换完全被一包围的零(即,1的圆环中间的0)到1。不过,我真的不知道如何开始。
当前阵列:
import numpy as np
arr = np.array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 0, 0, 1, 1, 0],
[0, 1, 1, 0, 1, 1, 0, 0],
[0, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])
目标数组:
import numpy as np
arr = np.array([[0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 0, 0],
[0, 1, 1, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]])
1条答案
按热度按时间j7dteeu81#
可以使用
scipy.ndimage.**binary_fill_holes**
:输出: