我试图想出一个算法,用于从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]]
在阵列中的不同位置存在各种相等数据的集群。我试图以矩形格式将其输出为由群集起始地址(startY,startX),群集结束地址(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的新手,所以我可能会遗漏一些东西,或者没有把嵌套函数的逻辑放在一起来制作过程二维。
谢谢!
答案 0 :(得分:0)
我没有看到第二阵列的相关性。
只要注意第一个数组,我就可以用
索引非零块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]])