如何筛选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
相关产品推荐
相关产品推荐

