我正在尝试想出一个从python中的2D numpy数组中提取矩形地址和值的算法。输入如下所示:
[[1, 1, 0, 0, 0, 0, 2],
[1, 1, 0, 0, 0, 0, 2],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 3, 3, 3, 0],
[0, 0, 0, 3, 3, 3, 0],
[0, 4, 4, 3, 3, 3, 0],
[0, 0, 0, 0, 0, 0, 3]]
在数组中的不同位置有各种相同数据的簇。我试图将其输出为一种格式,该格式由簇开始地址(start Y,start X)、簇结束地址(endY,endX)和该簇的值组成,采用矩形格式。因此,对于上面的2D数组,输出值系列如下所示(为了简洁起见,我排除了零值,但它们将包含在输出中):
(0, 0, 1, 1, 1)
(0, 6, 1, 6, 2)
(3, 3, 5, 5, 3)
(5, 1, 5, 2, 4)
(6, 6, 6, 6, 3)
numpy中有没有一个函数可以做这样的事情?我已经浏览了留档,似乎什么也找不到,尽管不可否认,我对numpy很陌生,所以我可能会遗漏一些东西,或者没有把嵌套函数的逻辑放在一起,使过程成为二维的。
谢谢你!
我没有看到第二个数组的相关性。
只要盯着第一个数组,我就可以索引非零块
In [738]: arr[0:2,0:2]
Out[738]:
array([[1, 1],
[1, 1]])
In [739]: arr[0:2,6:7]
Out[739]:
array([[2],
[2]])
In [740]: arr[3:6,3:6]
Out[740]:
array([[3, 3, 3],
[3, 3, 3],
[3, 3, 3]])
In [741]: arr[5:6,1:3]
Out[741]: array([[4, 4]])
In [742]: arr[6:7,6:7]
Out[742]: array([[3]])