从文件Python中查找2d文件中的分隔块数

时间:2017-08-28 22:42:33

标签: python file

如果标题有点令人困惑,请提前抱歉,不知道如何更好地说出来

在python中,如果你有一个单独的文件.txt'包含以下文字:

.....%%%%%..% %%%...%%...%% %.....%%%..%% ...%%.....%%% ....%%.....%% .....%%%..%%% %%%%....%%%.. 代表油漆的泼溅,我试图找到一种方法来输出单个块的数量,在这种情况下,这将返回' 4,我很难想象我将如何去关于这样做,任何帮助将非常感激。谢谢!

1 个答案:

答案 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是群集的数量。

如果这没有正确定义您的块,请更清楚地说明一点,甚至更好 - 上传一个明确标记块的图像。