Не думайте, что есть встроенный способ сделать это. Вот как вы можете go об этом без scipy:
from scipy.signal import find_peaks
import numpy as np
x = np.array([1,2,3,2,1,2,3,2,1,2,3,4,3,2,1,2,3,4,7,4,3,2,1])
peaks_indices = find_peaks(x)[0]
peaks = np.array(list(zip(peaks_indices, x[peaks_indices])))
threshold = 0.5 * max(x[peaks_indices])
filtered_peaks = [(index, value) for index, value in peaks if value > threshold]
# If you just want the indices:
filtered_peaks_indices = [index for index, value in peaks if value > threshold]
# Or just want the values
filtered_peaks_values = [value for index, value in peaks if value > threshold]
# Visualize
from matplotlib import pyplot as plt
plt.plot(range(len(x)), x)
for index in peaks_indices:
plt.axvline(index)
plt.axhline(threshold)
plt.scatter(filtered_peaks_indices, filtered_peaks_values, s=200)
plt.show()