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

如何在NumPy数组中筛选相邻元素差值超出1的元素?

NumPy数组筛选相邻元素差值绝对值大于1的元素

需求说明:
从NumPy数组 arr=np.array([1, 3, 3,4,7,4,1,6,7,8,9,5,13]) 中,筛选出与前一个元素的差值绝对值大于1的元素,期望输出为 3,7,4,1,6,5,13。

用户尝试的代码:

arr=np.array([1, 3, 3,4,7,4,1,6,7,8,9,5,13])
z=np.diff(arr) 

list=[]
for a in arr:
    for q in z:
        if q > 1:
            list1.append(arr1[a])
            print(arr[q+1])

问题分析与解决思路

你的代码存在几个问题:

  • 变量名混乱:list1、arr1未定义,属于语法错误
  • 逻辑错误:双重循环遍历数组和差值数组,无法正确对应每个元素与其前一个元素的差值关系
  • 条件判断不完整:只判断了差值大于1的情况,遗漏了差值小于-1的情况(即差值绝对值大于1的完整条件)

正确的解决逻辑:

  1. 用 np.diff(arr) 计算相邻元素的差值数组,该数组的第i个元素对应 arr[i+1] - arr[i]
  2. 生成布尔掩码:通过 np.abs(diffs) > 1 找出差值绝对值大于1的位置
  3. 由于差值数组长度比原数组少1,我们需要从原数组的第二个元素(arr[1:])中,用布尔掩码筛选出对应位置的元素

正确代码实现

import numpy as np

arr = np.array([1, 3, 3, 4, 7, 4, 1, 6, 7, 8, 9, 5, 13])
# 计算相邻元素差值
diffs = np.diff(arr)
# 生成差值绝对值大于1的布尔掩码
mask = np.abs(diffs) > 1
# 筛选符合条件的元素
result = arr[1:][mask]

print(result)  # 输出:[ 3  7  4  1  6  5 13]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:30:05