You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选NumPy数组中比右侧相邻元素小至少3的元素

筛选数组中满足条件的元素

给定数组:

ex_arr = [1, 2, 3, 8, 9, 10, 12, 16, 17, 23]

需要生成新数组,包含所有比右侧相邻元素小至少3的元素——也就是每个元素和右侧邻居比较,若邻居比当前元素大3及以上,就将当前元素加入新数组,最终期望结果为:

desired_arr = [3, 12, 17]

几种实现方式

方式1:普通循环遍历

遍历数组的前n-1个元素(最后一个元素没有右侧邻居,无需处理),逐个比较当前元素与下一个元素的差值:

ex_arr = [1, 2, 3, 8, 9, 10, 12, 16, 17, 23]
desired_arr = []
for i in range(len(ex_arr) - 1):
    current = ex_arr[i]
    next_val = ex_arr[i+1]
    if next_val - current >= 3:
        desired_arr.append(current)
print(desired_arr)  # 输出: [3, 12, 17]

方式2:列表推导式(简洁写法)

用zip函数把原数组和原数组从第二个元素开始的切片配对,再通过列表推导式直接筛选符合条件的元素:

ex_arr = [1, 2, 3, 8, 9, 10, 12, 16, 17, 23]
desired_arr = [curr for curr, next_val in zip(ex_arr, ex_arr[1:]) if next_val - curr >= 3]
print(desired_arr)  # 输出: [3, 12, 17]

方式3:enumerate遍历

借助enumerate获取元素索引和值,遍历到倒数第二个元素即可:

ex_arr = [1, 2, 3, 8, 9, 10, 12, 16, 17, 23]
desired_arr = []
for idx, num in enumerate(ex_arr[:-1]):
    if ex_arr[idx+1] - num >= 3:
        desired_arr.append(num)
print(desired_arr)  # 输出: [3, 12, 17]

内容的提问来源于stack exchange,提问作者Robsmith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:35:08