Как мне заставить SciPy возвращать значения х из максимумов y? - PullRequest
0 голосов
/ 28 февраля 2019

Я пишу скрипт для построения графика из 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.Возможно ли это?

Output image

1 Ответ

0 голосов
/ 28 февраля 2019

Ответ от @PaulH достигает того, что я хотел сделать.Включая его решение из комментариев выше, теперь у меня есть это как скрипт:

import matplotlib.pyplot as plt
import csv
from scipy.signal import find_peaks
import numpy

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,)

### This section is from @PaulH ###

list = numpy.array(x)[peaks[0]]
print(list)

###################################

Вывод теперь включает эту строку:

[-1.5  -0.75  2.5 ]

, которая включает в себя значения 'x' для трехмаксимумы в моем наборе данных.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...