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

获取Numpy数组中两个山丘的起始与结束索引

信息说明

现有如下NumPy数组:

[ 23  22  21  22  21  22  23  23  23  21  21  22  22  22  22  22  22  22
  22  22  21  21  22  22  22  22  23  22  22  21  21  20  20  19  19  19
  19  19  19  19  19  20  21  22  23  23  23  22  22  22  22  21  20  20
  19  19  19  19  19  19  19  19  19  19  20  20  21  21  23  24  24  25
  25  26  26  25  24  24  24  24  23  23  23  23  23  22  21  20  19  19
  19  18  18  18  18  18  19  18  18  18  18  18  18  18  18  18  18  17
  17  17  17  17  17  18  19  19  19  19  19  19  19  19  19  19  19  19
  19  19  19  19  19  19  19  18  18  18  17  16  16  16  15  14  15  14
  14  15  15  16  16  16  16  16  15  15  15  14  14  14  14  14  13  13
  13  13  13  13  11  11  10  10  11   9   9   8   9  11  11  12  12  10
  10  10  11  12  12  12  13  15  14  14  12  14  13  18  24  32  40  51
  63  62  68  78  82  90  92  93  95  96 106 112 118 123 123 125 130 134
 136 137 138 140 144 148 153 158 163 163 163 159 161 164 165 163 166 176
 179 184 190 200 207 210 213 214 216 218 221 228 233 236 237 238 238 241
 243 243 243 243 242 236 208 192 177 165 163 160 152 148 143 130 121 113
  94  81  61  53  48  41  31  30  29  28  21  19  13   5   3   7   9   9
  10   9  10  10  10  10  10  10   9  10  10  10  10  10  10  11  11  13
  16  21  22  21  22  22  26  24  22  22  19  19  19  19  19  19  24  32
  40  47  49  58  62  65  63  70  79  82  84  89  93  95  96 101 105 105
 111 111 117 117 117 118 122 123 126 128 133 134 138 141 150 154 157 159
 160 160 160 173 183 201 220 227 241 253 254 266 272 272 271 276 278 280
 284 285 284 271 262 248 247 248 252 253 256 259 266 266 266 258 256 268
 265 271 278 281 288 285 286 277 266 250 240 207 180 137  99  92  82  81
  82  80  81  80  80  80  77  77  78  79  75  73  72  72  71  72  70  71
  73  73  72  70  71  70  69  68  68  70  67  65  64  65  64  63  63  63
  63  63  61  62  62  62  62  63  63  63  63  63  63  63  63  64  61  60
  62  61  60  60  60  60  60  60  59  57  57  55  55  53  52  50  49  47
  46  44  44  42  40  39  37  36  32  30  27  24  25  26  22  18   6   7
   7   8  11  12  17  18  20  20  20  19  20  20  20  19  20  21  22  21
  24  22  22  20  20  19  19  17  17  16  17  15  15  15  14  14  15  13]

数组可视化图

问题需求

自动获取该数组中左侧山丘与右侧山丘的起始索引和结束索引,提供Python函数实现方案或数学解决方法。

预期结果

left = [181, 284]
right = [320, 502]

山丘索引标注图


解决方案

思路分析

结合数据可视化图与预期结果,“山丘”指数组中数值大幅上升后形成的高值区域,与前后低值区域有明显分界。可通过以下步骤识别:

  1. 计算数组的梯度(相邻元素差值),定位数值从低到高的突变起始点,以及从高到低的突变结束点。
  2. 设置阈值过滤小幅度波动,仅保留显著的上升/下降突变。
  3. 结合数据特征筛选出两个目标山丘的区间。

Python实现(基于NumPy)

import numpy as np

def find_hill_indices(arr):
    # 计算相邻元素的差值(梯度)
    grad = np.diff(arr)
    
    # 设定显著突变阈值(根据数据特征调整)
    rise_threshold = 20
    fall_threshold = -20
    
    # 找到显著上升的起始索引(梯度>阈值的位置+1,补全diff缺失的索引)
    rise_points = np.where(grad > rise_threshold)[0] + 1
    # 找到显著下降的结束索引(梯度<阈值的位置)
    fall_points = np.where(grad < fall_threshold)[0]
    
    # 提取两个山丘的区间
    left_hill = [rise_points[0], fall_points[0]]
    right_hill = [rise_points[1], fall_points[-1]]
    
    return left_hill, right_hill

# 转换给定数组为NumPy格式
arr = np.array([23,22,21,22,21,22,23,23,23,21,21,22,22,22,22,22,22,22,22,22,21,21,22,22,22,22,23,22,22,21,21,20,20,19,19,19,19,19,19,19,19,20,21,22,23,23,23,22,22,22,22,21,20,20,19,19,19,19,19,19,19,19,19,19,20,20,21,21,23,24,24,25,25,26,26,25,24,24,24,24,23,23,23,23,23,22,21,20,19,19,19,18,18,18,18,18,19,18,18,18,18,18,18,18,18,18,18,17,17,17,17,17,17,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,18,18,17,16,16,16,15,14,15,14,14,15,15,16,16,16,16,16,15,15,15,14,14,14,14,14,13,13,13,13,13,13,11,11,10,10,11,9,9,8,9,11,11,12,12,10,10,10,11,12,12,12,13,15,14,14,12,14,13,18,24,32,40,51,63,62,68,78,82,90,92,93,95,96,106,112,118,123,123,125,130,134,136,137,138,140,144,148,153,158,163,163,163,159,161,164,165,163,166,176,179,184,190,200,207,210,213,214,216,218,221,228,233,236,237,238,238,241,243,243,243,243,242,236,208,192,177,165,163,160,152,148,143,130,121,113,94,81,61,53,48,41,31,30,29,28,21,19,13,5,3,7,9,9,10,9,10,10,10,10,10,10,9,10,10,10,10,10,10,11,11,13,16,21,22,21,22,22,26,24,22,22,19,19,19,19,19,19,24,32,40,47,49,58,62,65,63,70,79,82,84,89,93,95,96,101,105,105,111,111,117,117,117,118,122,123,126,128,133,134,138,141,150,154,157,159,160,160,160,173,183,201,220,227,241,253,254,266,272,272,271,276,278,280,284,285,284,271,262,248,247,248,252,253,256,259,266,266,266,258,256,268,265,271,278,281,288,285,286,277,266,250,240,207,180,137,99,92,82,81,82,80,81,80,80,80,77,77,78,79,75,73,72,72,71,72,70,71,73,73,72,70,71,70,69,68,68,70,67,65,64,65
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:51:04