我想平滑如下所示的散点图(点非常密集),数据在这里。
曲线的中间有很大的噪声,我想使曲线平滑,而且y值也应单调增加。
由于存在许多这样的曲线,因此很难知道噪声在曲线中的位置。
我尝试过scipy.signal.savgol_filter,但是没有用。
我使用的代码是:
from scipy.signal import savgol_filter
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
s = np.loadtxt('data.csv', delimiter=',')
x = s[:, 0]
y = s[:, 1]
yhat = savgol_filter(y, 551, 3)
plt.plot(x, y, 'r')
plt.plot(x, yhat, 'b')
plt.show()
Run Code Online (Sandbox Code Playgroud)
建议真的很感激。谢谢!
-------------------更新-------------------------
按照Colin的方法,我得到了想要的结果。这是代码:
from scipy.signal import savgol_filter
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
s = np.loadtxt('data.csv', delimiter=',')
x = s[:, 0]
y = …Run Code Online (Sandbox Code Playgroud) 我想将列表输出到具有格式的txt文件中。但列表长度会不时发生变化。
代码是这样的:
a = [1, 2, 3] #**but this could also be: a = [1, 2, 3, 6, 9] or [1, 90]**
with open('node.k','w') as file:
file.write(((len(a)-1)*'{},'+'{}\n').format(a[0],a[1],a[2]))
Run Code Online (Sandbox Code Playgroud)
我想知道应该如何修改这段代码,以便该代码可以适用于不同的列表长度?