如果标题有点令人困惑,请提前抱歉,不知道如何更好地说出来
在python中,如果你有一个单独的文件.txt'包含以下文字:
.....%%%%%..%
%%%...%%...%%
%.....%%%..%%
...%%.....%%%
....%%.....%%
.....%%%..%%%
%%%%....%%%..
代表油漆的泼溅,我试图找到一种方法来输出单个块的数量,在这种情况下,这将返回' 4,我很难想象我将如何去关于这样做,任何帮助将非常感激。谢谢!
答案 0 :(得分:0)
我还不确定什么是" chunk"但这假定它是%
元素的集群:
import numpy as np
from scipy import ndimage
pattern = [];
with open('patterns.txt', 'r') as f:
for line in f:
line = line.replace('%','1').replace('.','0').replace('',' ')
pattern.append((line.strip(' \n ')).split())
image = np.array(pattern, dtype = int)
pstruct = [[1,1,1],[1,1,1],[1,1,1]]
labeled_array, num_features = ndimage.measurements.label(image,structure = pstruct)
此程序将您的.
和%
输入文件读入嵌套列表。它将所有%
变为1并将.
变为0,并生成numpy
整数数组,其中1和0表示原始模式。然后,它使用scipy
函数来查找1的簇。
pstruct
定义了什么被认为是一个集群,当使用默认值时,它会生成5个块,详细信息请参见https://docs.scipy.org/doc/scipy-.14.0/reference/generated/scipy.ndimage.measurements.label.html。
labeled_array
是按群集编号编号的块,num_features
是群集的数量。
如果这没有正确定义您的块,请更清楚地说明一点,甚至更好 - 上传一个明确标记块的图像。