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

如何更简洁地从peak_prominences返回元组中提取目标列表?

解决方案

问题核心

你之前的写法需要两次调用peak_prominences,本质是没有先保存函数返回值,每次取值都重新触发了一次完整的峰值计算流程,既写起来繁琐,还会无意义地消耗计算资源。

最简实现

只需要调用一次函数,把全部返回值保存下来,再按需提取元素即可。

  1. 一次性接住peak_prominences的返回值,按语义拆分变量:
    按照函数的固定实现逻辑,peak_prominences的返回是固定结构的三元组,依次对应:各峰的突出度、各峰的左边界索引、各峰的右边界索引。
    prominences, left_bases, right_bases = peak_prominences(probsuc, peaks, wlen=7)
    
    对应你给出的返回结果,拆分后各变量的值为:
    • prominences = array([0.015625, 0.24166667])
    • left_bases = array([9, 36])
    • right_bases = array([14, 42])
  2. 提取目标区间:
    因为左、右边界的数组和峰值是一一对应的,直接按索引取值即可:
    # 得到第一个峰的区间 [9,14]
    first_peak_range = [left_bases[0], right_bases[0]]
    # 得到第二个峰的区间 [36,42]
    second_peak_range = [left_bases[1], right_bases[1]]
    

批量简化技巧

如果需要一次性提取所有峰的左右边界区间,不需要逐个写索引,可以直接用zip配对两个边界数组:

all_peak_ranges = list(zip(left_bases, right_bases))
# 输出结果: [(9, 14), (36, 42)]

如果不想拆分三个语义变量,也可以直接接住整个返回元组后取值,只是可读性会稍弱:

peak_output = peak_prominences(probsuc, peaks, wlen=7)
# 取第一个峰区间
first_peak_range = [peak_output[1][0], peak_output[2][0]]
# 取第二个峰区间
second_peak_range = [peak_output[1][1], peak_output[2][1]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 06:06:02