如何用Python获取矩阵中某个值周围的左上角和右下角坐标?
我有一个二维的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)