Не могу понять, как работает функцияiform_filter1d () (импортировано из scipy.ndimage.filters) - PullRequest
1 голос
/ 17 марта 2019

Я прочитал документы по этой функции здесь: scipy.ndimage.uniform_filter1d .Однако, когда я попытался использовать это, я не мог обернуть голову, это работает.Я прочитал документы, провел там пример в Python Shell, использовал свой собственный пример, но все еще без прогресса.Например:

>>> from scipy.ndimage import uniform_filter1d
>>> uniform_filter1d([2, 8, 0, 4, 1, 9, 9, 0], size=3)
array([4, 3, 4, 1, 4, 6, 6, 3])
>>> uniform_filter1d([1, 2, 3, 4, 5, 6, 7, 8], size=3)
array([1, 2, 3, 4, 5, 6, 7, 7])

Когда я увидел выходные данные второго массива, я почувствовал, что функция сохранила большинство элементов массива.Однако во втором примере было похоже на запрет 4 и 1, все остальные элементы в выходном массиве были совершенно новыми.

Поэтому я прошу вас помочь мне разобраться в работе и использовании этой функции.

1 Ответ

1 голос
/ 17 марта 2019

Что этот фильтр делает, в соответствии с размером, чтобы взять среднее арифметическое каждого пикселя с его соседом. Размер - это размер подмассива для вычисления среднего арифметического. Стандарт для пикселей без достаточного количества соседей - это отражение. Давайте пойдем своим процессом:

uniform_filter1d([1,2,3,4,5,6], size=3)

[1,2,3,4,5,6] # index 0, Reflect 1 : [1,1,2] -> average: 4/3 = 1
[1,2,3,4,5,6] # index 1, [1,2,3] -> average: 6/3 = 2
[1,2,3,4,5,6] # index 2, [2,3,4] -> average: 9/3 = 3
[1,2,3,4,5,6] # index 3, [3,4,5] -> average: 12/3 = 4
[1,2,3,4,5,6] # index 4, [4,5,6] -> average: 15/3 = 5
[1,2,3,4,5,6] # index 5, Reflect 6 : [5,6,6] -> average: 17/3 = 5

Result: [1,2,3,4,5,5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...