如何将scipy find_peaks结果转为列表并排序振幅值?
解决scipy find_peaks峰值高度排序问题
问题核心:你提取峰值高度时,list(p_val.values())返回的是包含单个numpy数组的列表,对这个列表排序只会对列表内的元素(仅一个数组)排序,不会改变数组内部元素的顺序。
修正步骤
- 直接从
p_val字典中取出height对应的numpy数组 - 将数组转换为可直接索引的Python普通列表
- 对列表执行降序排序
修正后的代码
from scipy.signal import find_peaks p = find_peaks(data, height=60, distance=3) p_ind, p_val = p # 提取height数组并转为Python列表 a = list(p_val['height']) # 降序排序 a.sort(reverse=True)
可选:用numpy直接排序(保留数组类型)
如果需要保留numpy数组类型,也可以用numpy的排序方法,再转成列表:
import numpy as np a_sorted_array = np.sort(p_val['height'])[::-1] # 降序排序数组 a = a_sorted_array.tolist() # 转为Python列表
处理完成后,a就是一个可通过a[1]、a[2]直接访问元素的排序后列表。
内容的提问来源于stack exchange,提问作者Kishore Kumar S
相关产品推荐
相关产品推荐

