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

如何将有序numpy整数数组按相邻元素差值阈值拆分?

解决方案

可以利用NumPy的数组操作高效实现这个拆分需求,步骤如下:

  1. 计算相邻元素的差值:用np.diff()获取数组中每对相邻元素的差值。
  2. 定位拆分点:找出差值大于2的位置,这些位置就是子数组的分割边界。
  3. 分割数组:根据拆分点使用np.split()完成分割。

完整代码实现:

import numpy as np

arr = np.array([222, 225, 227, 228, 230, 232, 241, 243, 244, 245, 252, 253, 258])

# 计算相邻元素差值
diff = np.diff(arr)
# 找到差值大于2的索引位置,加1得到分割点(split的参数是数组的分割索引)
split_indices = np.where(diff > 2)[0] + 1
# 分割数组
result = np.split(arr, split_indices)

# 转换为列表形式输出(按需调整)
print([subarr.tolist() for subarr in result])

运行结果:

[[222], [225, 227, 228, 230, 232], [241, 243, 244, 245], [252, 253], [258]]

代码说明

  • np.diff(arr):生成长度为原数组长度-1的数组,每个元素对应原数组中相邻元素的差值。
  • np.where(diff > 2)[0]:获取差值大于2的元素在diff数组中的索引,这些索引对应原数组中需要拆分的前一个元素的位置,加1后得到np.split()所需的分割索引(比如diff[0] = 3,对应原数组arr[0]和arr[1]的差,分割点就设在索引1处)。
  • np.split(arr, split_indices):根据分割索引将原数组拆分为多个子数组,每个子数组内相邻元素的差值都不超过2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:15:29