假设我有一些数据,然后我还有一个与这些数据相对应的数组,它显示了一个点是否被检测为以1和-1编码的峰值或谷值。然而,需要注意的是,任何点都可能高于或低于阈值,因此一个数组可能看起来像[0,0,1,1,-1,-1,0,0],在本例中,我只希望保留对应数组中最极端值的峰值和谷值。例如,假设我的实际数据看起来像[0,0,5,10,-5,-10,0,0],我希望将我的数组转换为[0,0,0,1,0,-1,0,0]。我只想要一组连续事件中最极端的峰或谷。
发布于 2019-10-25 07:23:57
下面的代码应该会产生您想要的结果:
import numpy as np
from scipy.signal import argrelmax, argrelmin
def locate_extrema(arr):
arr = np.asarray(arr)
min_idxs = argrelmin(arr)
max_idxs = argrelmax(arr)
result = np.zeros_like(arr)
result[min_idxs] = -1
result[max_idxs] = 1
return result使用您的示例:locate_extrema([0,0,5,10,-5,-10,0,0])
输出:
array([ 0, 0, 0, 1, 0, -1, 0, 0])https://stackoverflow.com/questions/58550278
复制相似问题