Я пишу скрипт для построения графика из CSV («столбец A» - это «x», «столбец B» - это «y») и возвращаю значения «x» в одном или нескольких максимумах «y».
В настоящее время я использую функцию scipy find_peaks, чтобы найти максимумы, но я немного застрял в том, как я могу затем вернуть значения 'x'.В настоящее время я могу вывести массив позиций значений 'y' в моем входном файле, но затем я застрял.Я довольно новичок в этом, так что извините, если я ошибся в этом!
import matplotlib.pyplot as plt
import csv
from scipy.signal import find_peaks
x = []
y = []
with open('data.csv','r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
x.append(float(row[0]))
y.append(float(row[1]))
plt.figure(figsize=(10,5))
plt.plot(x,y, marker=' ')
peaks = find_peaks(y, height=100,)
print(peaks)
Я запускаю это в Spyder, изображение ниже (связано) имеет вывод.Ключевая часть такова:
(array([14, 17, 30], dtype=int64), {'peak_heights': array([1000., 700., 300.])})
В идеале я хотел бы использовать числа в первом массиве, чтобы найти значения 'x' из файла csv.Возможно ли это?