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

如何使用np.sign检测zero crossing并提取两个列表的对应片段

实现方案

核心逻辑

  • 先修正过零点检测函数的冗余代码,确保正确输出符号变化对应的索引
  • 构造完整切分点序列:在过零点列表前后分别补充起始位置0和列表总长度,覆盖首尾区间
  • 遍历相邻切分点,对两个列表同步做切片操作,分别存入结果集合

完整可运行代码

import numpy as np

# 修正后的过零点检测函数,移除冗余的for循环
def get_zero_crossings(arr1):
    # np.diff(np.sign(arr1))不为0的位置就是符号变化的过零点
    zero_crossings = np.where(np.diff(np.sign(arr1)))[0]
    return zero_crossings.tolist()

# 同步切分两个列表的函数
def sync_split_by_zero_crossing(arr1, arr2):
    zero_crossings = get_zero_crossings(arr1)
    # 构造完整切分点,补充首尾边界
    split_points = [0, *zero_crossings, len(arr1)]
    res_list1 = []
    res_list2 = []
    # 遍历每一组相邻切分点,同步切片
    for i in range(len(split_points)-1):
        start = split_points[i]
        end = split_points[i+1]
        res_list1.append(arr1[start:end])
        res_list2.append(arr2[start:end])
    return res_list1, res_list2

# 测试示例(修正了原示例的语法错误)
if __name__ == "__main__":
    # 你给出的过零点示例
    test_zero_crossing = [3,12,18]
    # 修正原list1的多余逗号,list2补充逗号分隔
    list1 = [-12,-14,-16,-10,1,3,6,2,1,5,5,3,-1,-12,-2,-3,-5,-3,3,2,5,2]
    list2 = [0.00040409, 0.00041026, 0.0004162, 0.00042, 0.0005, 0.0006, 0.0007, 0.0008, 0.0009, 0.001, 0.00105, 0.0011, 0.00115, 0.0012, 0.00125, 0.0013, 0.00135, 0.0014, 0.00116538, 0.001096, 0.00102431, 0.0009]
    
    # 直接用你给出的过零点测试切分
    split_points = [0, *test_zero_crossing, len(list1)]
    new_list1 = []
    new_list2 = []
    for i in range(len(split_points)-1):
        new_list1.append(list1[split_points[i]:split_points[i+1]])
        new_list2.append(list2[split_points[i]:split_points[i+1]])
    
    # 输出结果和你预期的结构一致
    print("new_list1分段:", new_list1)
    # 如果你需要把所有分段拼接成一个大列表,执行以下代码即可
    # merged_list1 = sum(new_list1, [])
    # merged_list2 = sum(new_list2, [])

注意事项

  • 需保证输入的list1和list2长度完全一致,否则切片会出现错位
  • 原示例中list1的2,,1存在多余逗号、list2元素间未用逗号分隔,运行前需先修正语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:15:06