【发布时间】:2017-07-29 15:00:53
【问题描述】:
我正在处理一个大型阵列 (3000 x 3000),我在该阵列上使用 scipy.ndimage.label。返回是 3403 个标签和带标签的数组。我想知道这些标签的索引,例如对于标签 1,我应该知道标签数组中的行和列。
所以基本上是这样的
a[0] = array([[1, 1, 0, 0],
[1, 1, 0, 2],
[0, 0, 0, 2],
[3, 3, 0, 0]])
indices = [np.where(a[0]==t+1) for t in range(a[1])] #where a[1] = 3 is number of labels.
print indices
[(array([0, 0, 1, 1]), array([0, 1, 0, 1])), (array([1, 2]), array([3, 3])), (array([3, 3]), array([0, 1]))]
我想为上面的所有 3403 标签创建一个索引列表。上面的方法似乎很慢。我尝试使用生成器,看起来没有改进。
有什么有效的方法吗?
【问题讨论】:
-
向我们展示您的工作循环解决方案。
-
@Divakar indices = [np.where(m[0]==t+1) for t in range(m[1])] 其中 m[0] 是标记数组,m[ 1] 是标签计数(此处为 3403)。
-
请将这些添加到问题中。也很高兴看到示例数据。
-
@Divakar 这就是想法
-
发布的解决方案对您有用吗?
标签: python arrays numpy scipy ndimage