本帖最后由 ivor 于 2020-5-29 21:53 编辑
看着还不错,和大家分享一下。
名称:挑出峰值数字和所处位置
详细介绍:
例子1, 数组 arr = [0, 1, 2, 5, 1, 0] 峰值索引位置在 3,峰值对应为 5 (since arr[3] equals 5). 结果:{pos: [3], peaks: [5]}
例子2,数组 arr = [1,2,5,4,3,2,3,6,4,1,2,3,3,4,5,3,2,1,2,3,5,5,4,3]), 索引位置在[2,7,14,20] 峰值对应为[5,6,5,5] 结果 :{"pos":[2,7,14,20], "peaks":[5,6,5,5]})
抛砖引玉附上Python代码:- a = [11, 20, 14, 4, 5, 4, 8, 17, 14, 9, 17, 20, 8, 19, 17, 15, 13, 20, 16, 7, 2, 11, 14, 18, 11, 2, 15, 1, 5, 4, 5, 1, 6, 6, 9, 13, 18, 19, 9, 17, 12, 19, 17, 2, 13, 9, 19, 2, 11]
- def pick_peaks(arr):
- pos = []
- prob_peak = False
- for i in range(1, len(arr)):
- if arr[i] > arr[i-1]:
- prob_peak = i
- elif arr[i] < arr[i-1] and prob_peak:
- pos.append(prob_peak)
- prob_peak = False
- return {'pos':pos, 'peaks':[arr[i] for i in pos]}
- print(pick_peaks(a))
复制代码 |