给定 2 个整数列表,如何找到不重叠的范围?

2024-02-03

Given

x = [5, 30, 58, 72]
y = [8, 35, 53, 60, 66, 67, 68, 73]

目标是迭代x_i并找到值y那大于x_i但不大于x_i+1

假设两个列表都已排序并且所有项目都是唯一的,给定所需的输出x and y is:

[(5, 8), (30, 35), (58, 60), (72, 73)]

我试过了:

def per_window(sequence, n=1):
    """
    From http://stackoverflow.com/q/42220614/610569
        >>> list(per_window([1,2,3,4], n=2))
        [(1, 2), (2, 3), (3, 4)]
        >>> list(per_window([1,2,3,4], n=3))
        [(1, 2, 3), (2, 3, 4)]
    """
    start, stop = 0, n
    seq = list(sequence)
    while stop <= len(seq):
        yield tuple(seq[start:stop])
        start += 1
        stop += 1

x = [5, 30, 58, 72]
y = [8, 35, 53, 60, 66, 67, 68, 73]

r = []

for xi, xiplus1 in per_window(x, 2):
    for j, yj in enumerate(y):
        if yj > xi and yj < xiplus1:
            r.append((xi, yj))
            break

# For the last x value.
# For the last x value.
for j, yj in enumerate(y):
    if yj > xiplus1:
        r.append((xiplus1, yj))
        break

但是有没有一种更简单的方法可以达到相同的效果numpy, pandas或者是其他东西?


您可以使用numpy.searchsorted with side='right'找出第一个值的索引y大于x然后提取带有索引的元素;一个简单的版本假设总是有一个值y大于中的任何元素x可能:

x = np.array([5, 30, 58, 72])
y = np.array([8, 35, 53, 60, 66, 67, 68, 73])

np.column_stack((x, y[np.searchsorted(y, x, side='right')]))
#array([[ 5,  8],
#       [30, 35],
#       [58, 60],
#       [72, 73]])

Given y已排序:

np.searchsorted(y, x, side='right')
# array([0, 1, 3, 7])

返回第一个值的索引y大于相应的值x.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给定 2 个整数列表,如何找到不重叠的范围? 的相关文章

随机推荐

  • 我可以禁用对已弃用的方法和类的 CheckStyle 投诉吗?

    我正在维护一个已弃用某些公共静态字段的 API CheckStyle 大声抱怨这些 但我宁愿让它完全忽略它们 因为我已经通过将字段标记为已弃用来处理问题 具体来说 该库具有用于枚举的常量 公共静态最终 但它们没有标记为最终的 CheckSt
  • 如何将 R 脚本加载到 JRI 并从 Java 执行?

    我正在使用 JRI 从 Java 执行 R 我看到 JRI 使用eval 方法来执行R命令 我有一个用于执行的 R 脚本 如何在 JRI 中加载此脚本并执行它 您可以使用 R 命令运行整个脚本source
  • jQuery 验证 - 相同的规则取决于值

    我在输入字段验证中获取 2 个范围值的语法时遇到问题 我的表单有 2 个选择字段和 1 个文本输入字段 If select1 1 and select2 A 我希望文本字段上的范围值是1 to 120 If select1 1 and se
  • pyRevit WPF非模态问题

    所以我刚刚开始涉足 pyRevit 中的 WPF 我尝试像这样实现pyrevit forms WPFWindow 类 coding UTF 8 Third Party software credits pyRevit repository
  • IPython Notebook ipywidgets 不显示

    我创建了一个带有交互式滑块的表格 它允许我在表格上的不同时段之间切换 过去几天一直有效 直到今天 当我重新运行笔记本时 滑动条不再显示 没有出现错误消息 当表格出现时 代码似乎运行得很好 但滑动条没有出现 我也没有更改我的代码 因为我正在处
  • Breezejs 和 EF6 中基于角色的安全性

    我在一个具有 3 个主要安全角色的项目中使用 Breeze js AngularJS Web API 和 EF6 可以说高级别 中级别和低级别 在这些示例中 我有 Person Company LowLevelSecret MediumLe
  • Rxjava 3 + Retrofit2 - 多次插入数据库问题

    我正在尝试做以下事情 使用 Retrofit 将云数据库同步到设备上的本地 SqLite DB Room DB 可能会变得很大 大约有 100 000 个寄存器或更多 因此同步过程可能需要一些时间 所以它会发送第一个Retrofit请求来获
  • iOS JSON 数组和 MapKit

    我正在尝试使用 MapKit 映射 JSON 数组 我可以使用下面的代码在地图上获得一个点 但是我有几十个需要标记的引脚 并且我准备了一个 JSON 数组 我的单点代码如下 在我的 h 文件中 import
  • 生成随机证书

    我正在寻找一个实用程序类 它可以生成用于测试目的的随机证书字符串 知道是否已经实施了吗 要添加到 martijno 给出的解决方案中 JCAContentSigner 可用于避免映射到 AlgorithmIdentifier 即 OID 而
  • 如何在 Objective C (iphone) 中通过引用传递值

    我有一个非常基本的问题 我是一名新 iPhone 程序员 我的问题是任何人都可以告诉我如何通过引用 obj 中的函数来传递值 C 我知道如何用 VB 和 C 来做 但不知道如何在 Obj c 中做到这一点 Thanks Objective
  • angular2 rc6:RouterState类型上不存在属性queryParams

    通往 Angular 2 Final 之路上的另一个 立即弃用错误 错误消息很清楚 我现在只需要知道相应的字段叫什么即可 有人吗 RouterState 类型上不存在属性 queryParams 以为我解决了 属性 queryParams
  • 根据单独的对象键、值过滤对象数组

    我有以下一组人 const FIRST ARRAY name Simon age 32 occupation Student name Vera age 22 occupation Developer 我想过滤数组以生成基于 过滤器 对象的
  • SQLException.getSQLState 的所有可能值是什么?

    SQLException getSQLState检索SQLState为了SQLException目的 此方法可以返回哪些可能的值 我可以使用该值来识别数据库中发生的特定错误 即该值可以告诉我它是否是 PK 违规 唯一约束或列值太大等 另外
  • iOS/OSX 应用程序组 ID,以“group”开头。或“团队 ID”。

    在配置门户 或现在的任何名称 中创建应用程序组 ID 时 它会显示 输入应用程序组的唯一标识符 以字符串 组 开头 并且似乎在输入字段中强制执行此操作 此外 许多示例代码使用应用程序组 ID 字符串 例如 group com company
  • 在 Powershell 控制台中使用 CTRL + D 退出并使用 CTRL + L cls

    我正在努力使 CTRL D exit Powershell console and CTRL L clear the screen 就像在 bash 中一样 到目前为止 我已经看到我们可以定义 function D exit 但这意味着我必
  • GWT 编辑器框架

    有没有办法获取编辑器正在编辑的代理 正常的工作流程是 public class Class implments Editor
  • 寻找张量的质心(张量流)

    有没有一种有效的方法来找到张量的质心 我正在使用 N 个堆叠体积 Nx64x64x64 并希望获得一个 Nx3 张量 其中包含每个 64x64x64 体积的质心的 x y z 位置 按照公式 您只需将每个坐标乘以相应的质量 将所有内容相加
  • 如何将位图照片转换为十六进制颜色代码?

    我正在尝试为我的简历创建一个程序 但我在转换时遇到问题bitmap照片就是灰度照片转为十六进制 或者更好地称之为代码 如果颜色 有人可以帮助我吗 我尝试将其转换为Base64字符串但它不起作用 openFileDialog1 new Ope
  • 将 Cordova 插件与 Capacitor 结合使用

    我一直在研究这个例子 https capacitor ionicframework com docs basics cordova https capacitor ionicframework com docs basics cordova
  • 给定 2 个整数列表,如何找到不重叠的范围?

    Given x 5 30 58 72 y 8 35 53 60 66 67 68 73 目标是迭代x i并找到值y那大于x i但不大于x i 1 假设两个列表都已排序并且所有项目都是唯一的 给定所需的输出x and y is 5 8 30