2014-12-24 7 views
5

Существует функция scipy.signal.argrelextrema, которая работает с ndarray, но когда я пытаюсь использовать ее на pandas.Series, она возвращает ошибку. Какой правильный способ использовать его с пандами?Выбор местных минимумов и максимумов из pandas.Series

import numpy as np 
import pandas as pd 
from scipy.signal import argrelextrema 
s = pd.Series(randn(10), range(10)) 
s 
argrelextrema(s, np.greater) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-13-f3812e58bbe4> in <module>() 
     4 s = pd.Series(randn(10), range(10)) 
     5 s 
----> 6 argrelextrema(s, np.greater) 

/usr/lib/python2.7/dist-packages/scipy/signal/_peak_finding.pyc in argrelextrema(data, comparator, axis, order, mode) 
    222  """ 
    223  results = _boolrelextrema(data, comparator, 
--> 224        axis, order, mode) 
    225  return np.where(results) 
    226 

/usr/lib/python2.7/dist-packages/scipy/signal/_peak_finding.pyc in _boolrelextrema(data, comparator, axis, order, mode) 
    60 
    61  results = np.ones(data.shape, dtype=bool) 
---> 62  main = data.take(locs, axis=axis, mode=mode) 
    63  for shift in xrange(1, order + 1): 
    64   plus = data.take(locs + shift, axis=axis, mode=mode) 

TypeError: take() got an unexpected keyword argument 'mode' 
+1

Возможно, вы захотите преобразовать свои данные: http://stackoverflow.com/questions/13187778/pandas-dataframe-to-numpy-array-include-index –

ответ

8

Вы, вероятно, хотите, чтобы использовать его как так,

argrelextrema(s.values, np.greater) 

Вы используете полную панду серии в то время как argrelextrema ожидает массив-я. s.values ​​предоставляет вам nd.array

+1

Спасибо, это Это! –

Смежные вопросы