如何解决二维数组中边界的numpy检测
我有矩阵(如下),它代表类(例如 0,1,2)。我正在使用热图用 plotly (python) 绘制它,但我找不到任何可以为我提供类边界坐标的函数。
array([[1,1],[1,2,2],[2,0],0]])
下面的黑线是边框,你能给出一些用python有效的方式计算它的技巧吗?检查数组中的每个元素及其邻居的工作速度非常慢。
更新。我也试图查看情节等高线图,但线条的形状有插值,所以它看起来不像上面的例子......
解决方法
您可以使用 skimage.measure
查找数组中的组件。由于 0
被认为是“背景”,因此您必须将标签更改为另一个标签,例如最大值 +1。这将为您提供带坐标的切片元组。
如果具有相同标签的块不一定“附加”或在同一组件中,则标签是必要的。否则,您可以直接使用 regionprops
来查找切片。
from skimage.measure import label,regionprops
a[a==0]=a.max()+1
l = label(a)
for s in regionprops(l):
print(s.slice)
(slice(0,4,None),slice(0,10,None))
(slice(2,None))
(slice(4,slice(3,None))
输入数据:
a = np.array([[1,1,1],[1,2,2],[2,0],0]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。