Hoo*_*ked 13 python algorithm numpy
我有一个大型numpy数组,我已应用过滤器.我想识别这个蒙版数组中的连续区域.如果沿着轴沿着相等的整数步长存在值的路径(对角线是有效步骤),则对于任何(x1,y1)其他索引的任何索引(x2,y2),如果存在True沿着相等整数步长的值的路径,则在此定义要连续的区域.
这可能不如简单图片那么清晰.鉴于面具:
0010000
0100000
0110000
0000011
1000010
Run Code Online (Sandbox Code Playgroud)
应该确定三个区域,使输出类似
[ [[0,2],[1,1],[2,1],[2,2]], [[3,5],[3,6],[4,5]], [[4,0]] ]
Run Code Online (Sandbox Code Playgroud)
我想使用内置的东西numpy,而不是试图编写我自己的Flood Fill算法.文档中的一些研究只发现了我要问的一维版本.
Bi *_*ico 18
你要找的scipy.ndimage.label,更多的信息在这里.label返回一个与输入相同的数组,其中每个"唯一特征具有唯一值",因此如果您想要这些特征的索引,您可以执行以下操作:
labels, numL = label(array)
label_indices = [(labels == i).nonzero() for i in xrange(1, numL+1)]
Run Code Online (Sandbox Code Playgroud)