内置函数 scipy.signal.savgol_filter 返回错误

iva*_*a32 5 python filter scipy

我正在尝试使用该scipy.signal.savgol_filter函数过滤数据集,但出现错误

TypeError: expected x and y to have same length
Run Code Online (Sandbox Code Playgroud)

当我尝试在新列表中分配数据时。

奇怪的是,就在我上次计算之前,一切都按预期工作,但现在我明白了。我试图创建一个与过滤后大小相同的空列表,但我得到了同样的错误。

这是我的代码的那一部分:

import scipy as sc
import scipy.signal
Cf = sc.signal.savgol_filter(x=C, window_length=299, polyorder=3)
Run Code Online (Sandbox Code Playgroud)

哪里C是一个明确定义的浮点型数字列表。

War*_*ser 8

如果window_length大于C(例如savgol_filter([3, 1, 4, 1, 5, 9], window_length=7, polyorder=3))的长度,我会收到您报告的错误。

在 SciPy 1.0.0 中,神秘的错误消息已被替换为信息更丰富的消息:

ValueError: If mode is 'interp', window_length must be less than
or equal to the size of x.
Run Code Online (Sandbox Code Playgroud)


Geo*_*rgy 5

错误信息令人困惑。就我而言,问题出在输入数组上。它采用以下形式:

x = np.array([[3], 
              [1],
              [4],
              [1], 
              [5], 
              [9]])
Run Code Online (Sandbox Code Playgroud)

通过np.ravel解决问题提供扁平化:

>>> np.ravel(x)
array([3, 1, 4, 1, 5, 9])
Run Code Online (Sandbox Code Playgroud)