Python 如何在pylab中的NaN上插值直线?
Pylab在数据中存在NaN的位置插入换行符。我怎样才能得到连续的线条。我认为matlab会自动做到这一点 例如: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]
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点的行。我会把我的问题澄清一点。。。还是没有一个干净的方法谢谢,我想这就是我最后发现的。。。单独绘制是可行的。也许这就是数据丢失时的期望行为?我个人从不在一维上绘制二维数组,因为我希望能够完全自由地分别操纵每条曲线,包括您遇到的场景-丢失数据/选择性绘制。