Pylab在数据中存在nan的位置插入换行符。如何获得连续线。我认为matlab会自动执行此操作。

例:

x = linspace(0,1,10)
y = rand(10,2)
y[5:8,1] = nan
plot(x,y,'.-')


我希望对y [:,1]进行插值,但不要对y [:,0]进行插值,因为没有缺失的点。

最佳答案

选择没有nan的行

from pylab import isnan
boolind = ~isnan(y).any(1)


然后做

plot(x[boolind], y[boolind])


如果您希望线性插值中的值替代该nan,则只需记录该nan的位置并使用相邻点进行插值,但我认为出于绘图目的,只需消除nan数据点就足够了-该代码仍然会为您执行线性插值。

顺便说一句:尽管我不确定为什么要相对于1D绘制2D数组,但是您的y = rand((10, 50))应该是y = rand(10, 50)

编辑

对于您的特定问题,您可以简单地分别绘制y的两列

from pylab import *
x = linspace(0,1,10)
y = rand(10,2)
y[5:8,1] = nan
boolind = ~isnan(y)
plot(x[boolind[:,0]],y[boolind[:,0], 0],'.-')
plot(x[boolind[:,1]],y[boolind[:,1], 1],'.-')
show()

关于python - 如何在pylab中对nans进行插值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10660144/

10-10 14:50