我正在处理一个大型数组(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个标签创建一个索引列表。上面的方法似乎很慢。我试过使用发电机,看起来没有什么改进。你知道吗
有什么有效的方法吗?你知道吗
好吧,提高效率的想法是,一旦进入循环,工作就最小化。矢量化方法是不可能的,因为每个标签的元素数是可变的。因此,考虑到这些因素,这里有一个解决方案-
样本输入,输出-
关闭
row_indices
和col_indices
的第一个元素是预期的输出。每个区域的第一组代表0-th
区域,因此您可能希望跳过这些区域。你知道吗相关问题 更多 >
编程相关推荐