【问题标题】:Label nonzero neighbour values in 2d array [duplicate]在二维数组中标记非零相邻值[重复]
【发布时间】:2020-01-07 03:12:15
【问题描述】:

我有一个像这样由 0 和 1 组成的二维列表

a=[['0', '0', '1', '1', '0', '0', '0', '0', '0', '0'],
   ['0', '0', '1', '0', '0', '1', '0', '0', '0', '1'],
   ['0', '0', '0', '1', '0', '0', '0', '0', '0', '0'],
   ['0', '0', '0', '0', '0', '1', '0', '0', '0', '0'],
   ['0', '1', '1', '1', '0', '0', '0', '0', '0', '0']]

我想将在各个方向上彼此靠近的“1”分组,并用这样的组号替换它们

a=[['0', '0', '1', '1', '0', '0', '0', '0', '0', '0'],
   ['0', '0', '1', '0', '0', '2', '0', '0', '0', '3'],
   ['0', '0', '0', '1', '0', '0', '0', '0', '0', '0'],
   ['0', '0', '0', '0', '0', '4', '0', '0', '0', '0'],
   ['0', '5', '5', '5', '0', '0', '0', '0', '0', '0']]

还有办法吗?

【问题讨论】:

    标签: python list numpy multidimensional-array scipy


    【解决方案1】:

    您正在尝试做的事情被称为连接组件标签,并且您有 scipy 的 scipy.ndimage.measurements.label

    from scipy import ndimage 
    import numpy as np
    
    a = np.array(l, dtype=('i1'))
    x_components, _ = ndimage.measurements.label(a, np.ones((3, 3)))
    
    array([[0, 0, 1, 1, 0, 0, 0, 0, 0, 0],
           [0, 0, 1, 0, 0, 2, 0, 0, 0, 3],
           [0, 0, 0, 1, 0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 4, 0, 0, 0, 0],
           [0, 5, 5, 5, 0, 0, 0, 0, 0, 0]], dtype=int32)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 2017-03-12
      • 2013-09-13
      • 2015-09-28
      • 1970-01-01
      相关资源
      最近更新 更多