2012-07-31 102 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