提取"阻止"来自2D numpy数组

时间:2017-08-14 21:15:20

标签: python numpy multidimensional-array

我试图想出一个算法,用于从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的新手,所以我可能会遗漏一些东西,或者没有把嵌套函数的逻辑放在一起来制作过程二维。

谢谢!

1 个答案:

答案 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]])