scipy.signal.medfilt出现UserWarning: kernel_size exceeds volume extent: the volume will be zero-padded

错误复现

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(这个官方文档写的很不到位!)

猜你喜欢

转载自blog.csdn.net/shiyuzuxiaqianli/article/details/115607017
今日推荐