微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

二维数组中边界的numpy检测

如何解决二维数组中边界的numpy检测

我有矩阵(如下),它代表类(例如 0,1,2)。我正在使用热图用 plotly (python) 绘制它,但我找不到任何可以为我提供类边界坐标的函数

array([[1,1],[1,2,2],[2,0],0]])

下面的黑线是边框,你能给出一些用python有效的方式计算它的技巧吗?检查数组中的每个元素及其邻居的工作速度非常慢。

enter image description here

更新。我也试图查看情节等高线图,但线条的形状有插值,所以它看起来不像上面的例子......

解决方法

您可以使用 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 举报,一经查实,本站将立刻删除。