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

基于索引分割1D numpy数组:寻求更简洁的连续值分割方案

简洁实现numpy数组按相邻元素差值分割

嘿,这个需求用numpy的矢量化操作就能轻松搞定,完全不用写复杂的逻辑判断,代码简洁又高效!

实现步骤

  1. 计算相邻元素的差值:用np.diff()快速得到数组中每对相邻元素的差值数组;
  2. 定位分割点:找出差值大于1的位置,分割点是这些位置的下一个索引(因为差值的索引对应原数组中前一个元素的位置,比如索引3的差值对应原数组第3和第4个元素的差,分割点就在第4个元素的位置,也就是索引4);
  3. 分割数组:用np.split()根据分割点直接拆分原数组。

完整代码示例

import numpy as np

# 示例数组
arr = np.array([77, 78, 79, 80, 90, 91, 92, 100, 101, 102, 103, 104])

# 计算相邻元素差值
diffs = np.diff(arr)
# 获取分割点索引
split_indices = np.where(diffs > 1)[0] + 1
# 分割数组
sub_arrays = np.split(arr, split_indices)

print(sub_arrays)
# 输出结果:[array([77, 78, 79, 80]), array([90, 91, 92]), array([100, 101, 102, 103, 104])]

为什么这个方法更好?

  • 全程用numpy的内置矢量化函数,避免了手动循环,代码更简洁易读;
  • 矢量化操作在处理大型数组时,效率比循环判断高得多,性能优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:04:15