2012-07-31 99 views
2

的两个数组所以我有一些数据绘制不同长度

import pyfits 
import matplotlib.pyplot 
a = pyfits.getdata('data.fits') 
x = a['time'] 
y = a['flux'] 

我有在我的数组包含NaN值的一些数据的问题。要摆脱他们,我做了以下内容:

x = x[numpy.logical_not(numpy.isnan(x))] 
y = y[numpy.logical_not(numpy.isnan(y))] 

从阵列xy删除所有NaN值。问题是xy不包含相同数量的NaN值。

这样:

len(y) = 4275 

而:

len(x) = 4313 

我希望能够做到这一点:

pyplot.plot(x,y) 

但与试图绘制阵列的一个问题不同的尺寸。有没有办法可以做到这一点?

回答

1

你怎么得到你的数据图?我会假设在进口你会有x或y为0,这样每个x都有一个合适的y?

+0

对不起。我对它进行了编辑,以便更清楚我想要做什么。 – 2012-07-31 22:57:41

+0

什么是具有错误x或错误y坐标的数据示例? – Shawn 2012-07-31 23:00:02

+0

好吧,假设x = [5000,5400,3200,NaN,NaN,6670,5000,NaN] 但y = [Nan,430,Nan,550,NaN,800,700,300] – 2012-07-31 23:01:17

4

您可以压缩的两个数组,并放弃任何一点(x, y)情形之一xyNaN(我想这更有意义)。现在我对numpy不熟悉,或者它提供了一个简短的方法来做到这一点,您可能需要自己实现它。

+0

这是一个好点 - 如何在图上绘制'(x,y)',其中'x'和'y'中的一个或两个都是'NaN'? – 2012-07-31 22:58:19

+0

我不明白你的意思是什么。我对编程相当陌生(我有约7周的时间)。 – 2012-07-31 22:58:39

+0

@DaxFeliz作为一个例子,zip([1,2,3],[10,20,30])= [(1,10),(2,20),(3,30)]''。我在这里概念上讲话,所以坐标被分组为点。是否需要实际压缩这两个列表取决于您如何实现它。 – sxu 2012-07-31 23:03:29