python - 在一维布尔数组中查找连续区域
问题描述
如果我有一个一维布尔数组,比如说np.array([True, False, True, True True, False, True, True])
,我想要一个可以返回给我的所有连续区域的索引的函数True
。
例如,在上述数组上调用的此函数的输出将产生类似[(0,0), (2,4), (6,7)]
.
我不确定如何很好地做到这一点,我也希望能够使用 PyTorch 张量来做到这一点。
解决方案
我已经在我编写的名为haggis的实用程序库中实现了这个确切的东西。功能是haggis.math.mask2runs
。我写它的部分原因是为了解决 Stack Overflow 上这个反复出现的问题:
runs = haggis.math.mask2runs(mask)
第二列是排他索引,因为这在 python 和 numpy 中都更有用,所以你可能想要这样做
runs[:, -1] -= 1
这个功能没有什么特别之处。您可以使用 numpy 将其编写为单行:
runs = numpy.flatnonzero(np.diff(numpy.r_[numpy.int8(0), mask.view(numpy.int8), numpy.int8(0)])).reshape(-1, 2)
推荐阅读
- java - Java中的MySql表监听器
- c# - LINQ 查询、分组依据和多个总和
- lombok - 是否可以排除 lombok 功能
- menu - 如何使侧边栏菜单适用于移动设备?
- html - Safari 中的 Highchart 下载问题
- hyperledger-fabric - 在超级账本作曲家设置中使用 kafka 配置
- angular - 如何影响每个元素在 angular5 中改变其行
- javascript - 给定动作“Movies_List”,reducer 返回 undefined
- asp.net - Option Strict 不允许使用 IEnumerable 进行后期绑定
- xml - InnerXml 替换,但只有一次