错误复现
import scipy.signal as signal
import numpy as np
x = np.arange(0, 100, 10)
np.random.shuffle(x)
x_filtered = signal.medfilt(x, 9)
# 以下是错误示例,就是下面的代码触发了UserWarning
x_1 = x.reshape(-1, 1)
x_filtered_1 = signal.medfilt(x_1, 9)
从结果中(见下图红框处)看区别,x和x_1的shape不一样,导致了滤波后的结果也不一样,明显x_1滤波后的结果是错误的。所以报出的UserWarning虽然是警报,但是其实是个严重错误。
错误原因
在使用scipy.signal.medfilt对一维数据进行中值滤波时候,数据的shape只能是(-1, )
,不能是(-1, 1)
see also
SciPy官方:scipy.signal.medfilt(这个官方文档写的很不到位!)