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

如何提取x_arr、y_arr中height_arr各元素前后各20个对应数据点

你的代码存在3个核心问题

  • 逻辑完全偏离需求:你写的section_x_arr > height_list[i][0]是把整个x数组和单个极小值x做比较,返回的是全数组布尔值,完全不是在定位目标点的位置,section_y_arr < height_list[i][1]的判断逻辑也和你要拿前后20个点的需求毫无关联。
  • 缺少核心的定位步骤:你没有先找到每个极小值点在x_arr、y_arr中对应的索引位置,自然无法提取前后区间的数据。
  • 变量名不对应:你描述中用到的数组名是x_arr、y_arr、height_arr,代码里写的是section_x_arr、section_y_arr、height_list,变量不匹配会导致取值错误。

正确实现方案

你需要先定位每个极小值点在原数组中的索引,再按窗口大小切片取前后20个点即可,注意做边界溢出处理。以下是基于numpy的实现代码:

import numpy as np

transit_curves = []
window = 20
arr_length = len(x_arr)

for target_x, target_y in height_arr:
    # 定位目标极小值的索引,浮点数场景用np.isclose替代==避免精度误差
    pos = np.where((x_arr == target_x) & (y_arr == target_y))[0][0]
    # 计算切片边界,避免索引越界
    start_idx = max(0, pos - window)
    end_idx = min(arr_length, pos + window + 1)
    # 提取窗口内的x、y数据
    transit_curves.append([x_arr[start_idx:end_idx], y_arr[start_idx:end_idx]])

# 输出验证第一个结果
print(transit_curves[0])

如果你的极小值点存在重复匹配到多个索引的情况,按需调整np.where返回结果的取数逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:03