如何用Python获取矩阵中某个值周围的左上角和右下角坐标?

2 投票
1 回答
3438 浏览
提问于 2025-04-17 01:47

我有一个二维的numpy数组。我们来看一个例子:

    [[0,6,89,255,1,6,7]
    [0,255,89,255,1,1,7]
    [255,255,255,255,255,255,255]
    [1,2,3,4,5,6,7]
    [1,1,255,5,7,3,255]]

我们需要找到一个特定值周围的框的坐标。比如说,对于值255,围绕这个值255的框的左上角坐标是(0,0),右下角坐标是(4,6)。

怎么在Python中高效地做到这一点呢?

非常感谢!

1 个回答

4

这个答案和这个问题很相似:在NumPy中有没有一个“边界框”函数(切片非零值)用于ndarray?

from numpy import array, argwhere

A = array([[0  ,6  ,89 ,255,1  ,6  ,7  ],
           [0  ,255,89 ,255,1  ,1  ,7  ],
           [255,255,255,255,255,255,255],
           [1  ,2  ,3  ,4  ,5  ,6  ,7  ],
           [1  ,1  ,255,5  ,7  ,3  ,255]])

B = argwhere(A==255)
(ystart, xstart), (ystop, xstop) = B.min(0), B.max(0) 

撰写回答