Код: Выделить всё
import numpy as np
from peakutils import indexes
arr = stress_data.to_numpy()
times_all = arr[:,0]
peaks_all = []
width = 125
for i in range(1,np.shape(arr)[1]):
x = arr[:,i]
xf = x - np.mean(x)
threshold = 0.1*np.average(xf) / np.max(xf)
# Find x-coordinates of peaks in signal
peaks = indexes(xf, thres = threshold, min_dist = width)
sg = [times_all[peaks], xf[peaks]]
peaks_all.append(sg)
Я попытался оптимизировать его с помощью np.apply_along_axis и определить обработку функция для этого, но выполнение этого способа заняло еще больше времени. Вот код, который я использовал для этого:
Код: Выделить всё
def process_column(x):
xf = x - np.mean(x)
threshold = 0.1 * np.average(xf) / np.min(xf)
valleys = indexes(xf, thres=threshold, min_dist=width)
return [times_all[valleys], xf[valleys]]
valleys_all = np.apply_along_axis(process_column, axis=0, arr=data_all.T)
Подробнее здесь: https://stackoverflow.com/questions/787 ... or-loop-wi