繁体   English   中英

我是否可以用相同的元素“标记” numpy数组中的相邻元素?

[英]Is there a way I can “tag” adjacent elements in a numpy array with the same element?

我使用的是python 2.7,我在OpenCV中随机生成了一些区域,这些区域最后在numpy数组中看起来像这样:

    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 1 1 0 0
    0 0 0 0 0 0 0 0 0 0 1 1 0 0
    0 0 0 0 0 0 0 0 0 0 0 1 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 1 1 1 0 0 0 0 0 0
    0 0 0 0 0 1 1 1 0 0 0 0 0 0
    0 0 0 0 0 1 1 0 0 0 0 0 0 0
    0 0 0 0 0 1 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0

我实际上使用更大的矩阵,最多可以生成5个区域。 我想做的是读取生成的矩阵和“组”区域以生成第二个矩阵,如下所示:

    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 1 1 0 0
    0 0 0 0 0 0 0 0 0 0 1 1 0 0
    0 0 0 0 0 0 0 0 0 0 0 1 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 2 2 2 0 0 0 0 0 0
    0 0 0 0 0 2 2 2 0 0 0 0 0 0
    0 0 0 0 0 2 2 0 0 0 0 0 0 0
    0 0 0 0 0 2 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0

因此,如果最后我有一个带有5个编号点的矩阵。 我是python的新手,但我认为以某种方式这可能是一种简便的快速方法。 我希望有一个人可以帮助我。

SciPy中的scipy.ndimage.label确实做到了

您需要定义一个结构来评估哪些元素属于一个组,例如:

structure = [[1,1,1],[1,1,1],[1,1,1]]

如果要查找附近的元素(包括对角线),或者

structure = [[0,1,0],[1,1,1],[0,1,0]]

如果您只需要一点的左/右/上/下。 请注意,该函数返回两个值,第一个是您请求的数组,第二个是找到的“标签”的数量。

在此上下文中,您可能会在scipy.ndimage.measurements找到一些其他功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM