我有一个保存时间序列数据的numpy.array
,其中data[:,0]
是时间,其他列是一些测量值。我还有一个list_of_peaks
,它是数据中有一些有趣的地方的时间列表。
我的目标是为list_of_peaks
中的每个点计算一个特定的度量,该度量基于data
中比任何其他峰值更接近它的点,也就是说,我希望在list_of_peaks
中的每个点之间划分data
。
我目前(非常慢)的算法是:
def measure(d,t_m,t_p):
radius = d[(d[:,0] > t_m)* (d[:,0] < t_p)]
return np.max(radius) - np.min(radius)
list_of_measures = []
for i in range(len(list_of_peaks)):
if i == 0:
list_of_measures.append(measure(data,data[0,0],(list_of_peaks[i+1] - list_of_peaks[i])/2+list_of_peaks[i]))
elif i == len(list_of_peaks) - 1:
list_of_measures.append(measure(data,list_of_peaks[i] - (list_of_peaks[i]-list_of_peaks[i-1])/2,data[-1,0]))
else:
list_of_measures.append(measure(data,list_of_peaks[i] - (list_of_peaks[i]-list_of_peaks[i-1])/2,(list_of_peaks[i+1] - list_of_peaks[i])/2+list_of_peaks[i]))
我还没有找到任何好的内置numpy
函数来满足我的目的,但我非常确定这可以做得更好,我只是不认为该如何做。
https://stackoverflow.com/questions/51731976
复制相似问题