Python 如何在pylab中的NaN上插值直线?

Python 如何在pylab中的NaN上插值直线?,python,plot,matplotlib,Python,Plot,Matplotlib,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]

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
数据点就足够了-代码将为你进行线性插值

顺便说一句:假设你的
y=rand((10,50))
应该是
y=rand(10,50)
,尽管我不确定你为什么要用1D来绘制二维数组

编辑

对于您的特定问题,您可以简单地分别绘制
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()

这将删除任意数量的nan导致丢弃非nan点的行。我会把我的问题澄清一点。。。还是没有一个干净的方法谢谢,我想这就是我最后发现的。。。单独绘制是可行的。也许这就是数据丢失时的期望行为?我个人从不在一维上绘制二维数组,因为我希望能够完全自由地分别操纵每条曲线,包括您遇到的场景-丢失数据/选择性绘制。