Векторизация 1D медианного фильтра Для 2D массивов в Python - PullRequest
2 голосов
/ 11 февраля 2020

Как можно векторизовать процесс применения 1D медианного фильтра к строкам массива 2D NumPy? Есть ли способ избежать зацикливания строк (0, 1, ..., 19)? Мои данные - это временные ряды (25000 выборок) от 20 датчиков.

# Python
import numpy as np
from scipy import signal
a = np.random.rand(20,25000)
window_len = 101
aFiltered = signal.medfilt(a, window_len, axis = 1) # seems like there is no axis option

Мой опыт в основном связан с MATLAB, где я могу указать ось, к которой применяется фильтр:

% MATLAB
whichAxis = 1;
medfilt1(a, 101, [], whichAxis); % runs very fast, takes about 100 milliseconds on a laptop with a 3.0 GHz CPU.

Мне было интересно, может ли Python выполнять те же функции.

Может ли кто-нибудь помочь?

1 Ответ

2 голосов
/ 11 февраля 2020

Попробуйте это:

from scipy.ndimage import median_filter
aFiltered=median_filter(a,size=(1,101))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...