【发布时间】:2021-01-30 00:53:18
【问题描述】:
我有一组点保存为数据框dp:
xlist ylist
0 0.017108 0.902494
1 0.019659 0.741981
2 0.030310 0.920884
3 0.032064 0.255826
4 0.046168 0.562761
5 0.060758 0.583044
6 0.118274 1.000000
7 0.125385 1.000000
8 0.140418 1.000000
9 0.153699 1.000000
10 0.186998 0.293743
11 0.215375 0.112288
12 0.217875 0.260883
13 0.250591 0.325953
14 0.262788 0.084916
15 0.287382 0.104910
16 0.325902 0.088418
17 0.377885 0.312025
18 0.473086 0.068632
19 0.485449 0.059624
20 0.557334 0.734376
21 0.572133 0.709392
22 0.610553 0.840687
23 0.626902 0.737930
24 0.630276 0.084787
25 0.637779 0.091535
26 0.717553 0.074411
27 0.742187 0.092770
28 0.757873 0.532881
29 0.780933 0.528202
30 0.836708 0.422615
31 0.920814 0.359896
32 0.938639 0.355241
33 0.954564 0.280989
34 0.978567 0.649749
35 0.995067 0.769272
使用 pyplot.vlines 看起来像这样:
[plt.vlines(x,0,y) for x,y in zip(dp.xlist, dp.ylist)]
plt.show()
我想将 xlist 替换为:
x = linspace(0,1,num=100) ###(or num=200... not important)
并创建一个新的 y,使用 ylist 中的值,其中 x 接近 xlist,而在其他位置为零。
到目前为止,我尝试的是对于每对 xlist, ylist 值,我检查我的线性空间中是否有一个点与 xlist 中的点足够接近,然后将其分配给 ylist 的相应值,否则,我输入一个零。
for i in dp.index:
fill = []
for xa in x:
if abs(dp.xlist[i]-xa)<0.001:
tmp = dp.ylist[i]
else:
tmp = 0
fill.append(tmp)
但我认为我正在覆盖列表“填充”,这就是它不起作用的原因,但我不知道如何解决这个问题。
有没有快速简单的方法来实现这一点?
【问题讨论】:
标签: python pandas numpy plot interpolation