如果我有这样的数据数组:
[[1, 1, 0, 0, 0, 1, 1],
[1, 0, 0, 0, 0, 1, 1],
[1, 0, 1, 1, 0, 0, 1],
[0, 0, 1, 1, 0, 0, 0]]
我如何将每个1s分组,并为每个1s分组分配一个计数,以便得到如下数组:
[[1, 1, 0, 0, 0, 2, 2],
[1, 0, 0, 0, 0, 2, 2],
[1, 0, 3, 3, 0, 0, 2],
[0, 0, 3, 3, 0, 0, 0]]
基本上尝试识别每个数据点群集,并为该数据点群集分配一个特定值以对其进行识别。
答案 0 :(得分:0)
skimage.measure.label()
函数(已经由 Aaron 提及)应该给出您想要的结果:
import numpy as np
import skimage
# Initialize example array
arr = np.array([
[1, 1, 0, 0, 0, 1, 1],
[1, 0, 0, 0, 0, 1, 1],
[1, 0, 1, 1, 0, 0, 1],
[0, 0, 1, 1, 0, 0, 0],
])
# Label connected regions
result = skimage.measure.label(arr)
print(result)
# Output:
# [[1 1 0 0 0 2 2]
# [1 0 0 0 0 2 2]
# [1 0 3 3 0 0 2]
# [0 0 3 3 0 0 0]]