2013-10-17 25 views
2

我需要對python中的非均勻間隔網格執行一些過濾。因此,我通過的GridData來內插所述非均勻網格成均勻之一:正確使用numpy插值

zi = interpolate.griddata((xin, yin), zin, (xi[None,:], yi[:,None]), method='cubic') 

然後,滋已被過濾後,我需要備份網格內插到原始辛,陰分。如果我這樣做:

zout = interpolate.griddata((xi, yi), zi, (xin[None,:], yin[:,None]), method='cubic') 

我得到了一些錯誤,我不理解,關係到Delaunay三角「qhull精度警告」和「qhull錯誤」。

有誰知道我該如何解決這個問題?它可能與(xin,yin)沒有排序的事實有關嗎?謝謝。

[更新] 我會盡力澄清輸入的數據是什麼。輸入數據是一個笛卡爾網格,它已經在中心進行了細化(x軸和y軸)。只要我想對它進行過濾,我需要內插一個均勻採樣的版本,並執行另一個插值以從均勻採樣到精確。

新,陰,ZIN是一維數組,以及Xi和Yi。 zi(griddata的輸出)是一個二維數組。

+0

你可以添加一些示例輸入數據到你的文章?如果您願意,您可以生成與輸入相同形狀的隨機數據。 – YXD

+0

嘗試使用'method ='nearest'',看看你是否得到這個錯誤... –

+3

你的數據是什麼樣的?二維散點,還是定期網格排序的數據?什麼是'xin.shape','yin.shape','zin.shape'?沒有這些信息,很難說您是否正確使用該功能。 「Qhull錯誤」通常意味着您的數據位於2-D的一條線上,因此不能用於任何類型的插值。 –

回答

1

您對griddata秒調用不正確。它期望xiyi是每個點的座標,並且是zi[i,:]對應於點(xi[i], yi[i])的值。

顯然,您的xiyi陣列碰巧具有相同的條目號N,因此您不會立即收到錯誤消息。該功能無法猜測您實際上是否希望它執行其他操作。