Я пытаюсь вычислять движущуюся медиана примерно для 10.000 сигналов, которые каждый из них представляет собой список длиной около 750.num_indices = 2000 # Set number of indices
# Generate lists of values (each a list of numbers from 0 to 1)
column_data = [np.random.random(750).tolist() for _ in range(num_indices)]
# Create DataFrame
df = pd.DataFrame({'values': column_data}, index=range(num_indices))
< /code>
Я нашел эту реализацию, которая использует np.lib.stride_tricks, но для моей цели это немного медленно. У кого -нибудь есть идея для более быстрого метода? < /P>
def moving_median(signal,n=150):
# Compute rolling median for valid windows
swindow = np.lib.stride_tricks.sliding_window_view(signal, (n,))
b = np.nanmedian(swindow, axis=1)
b_full = np.concatenate([[np.nanmedian(signal)]*(n-1), b]) # Prepend first `n-1` values unchanged
return signal - b_full
< /code>
и, наконец: < /p>
df.iloc[:,0].apply(lambda x: moving_median(x))
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-in-numpy
Быстрая перемещение медианы в Numpy ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение