2016-09-25 15 views
0

等高線マップを使用してプロットすると、地形マップのように見えるデータの配列があります。私は、配列を展開して、ユーザーが選択した間隔でポイント間のデータを「補間」し、欠落している要素に既存のデータポイント間の平均値を埋め込むことを検討しています。たとえば、matplotlib補間データ用の配列を埋めるためのscipy ndimage

Original Array: 
[[1 2 3] 
[4 5 6] 
[7 8 9]] 

with 1X expansion becomes: 
[[1 . 2 . 3] 
[. . . . .] 
[4 . 5 . 6] 
[. . . . .] 
[7 . 8 . 9]] 

と入力してください。値はデータポイント領域の値の平均値になります。 scipy.ndimageフィルタでこれを行う方法はいくつかありますが、元のデータ値(gaussian_filterとndimage.zoom)はすべて変更されているようです。

このデータ配列を展開し、展開された位置に元の値を保持し、欠落した点を「補間された」平均値で埋めるフィルターがないかと思いますか?誰かが私を正しい方向に向けることができたら、私はそれをチェックしますが、私の検索とテストでは私がまだ探している結果が得られていません。

これは、このコードの例です。元のx、y、z値は、mysqlデータベースのsql結果から作成された配列から来ています。私は0から5のバリエーションを試しました。リストにあるすべてのモードとプリフィルタをオン/オフします。また、gaussian_filterを使用していくつかのオプションを試しました。補間値は、1ユーザ入力から渡された10の間の数である:

x=np.array(self.lon) 
y=np.array(self.lat) 
z=np.array(self.plotdata) 
if (int(interpolation)>0): 
    x=scipy.ndimage.zoom(x, int(interpolation), order=0, mode='nearest', prefilter=True) 
    y=scipy.ndimage.zoom(y, int(interpolation), order=0, mode='nearest', prefilter=True) 
    z=scipy.ndimage.zoom(z, int(interpolation), order=0, mode='nearest', prefilter=True) 

TIA

答えて

0

私は似た何かをやってndimage.zoomに問題がありました。それは画像を歪曲していて、私は結果に満足していませんでした。 skimage.transform.resizeが見つかりました。これははるかに良く機能し、あなたにとって役に立つかもしれません。

http://scikit-image.org/docs/dev/api/skimage.transform.html#skimage.transform.resize

+0

ありがとうございました。これはイメージファイルの処理に特化しているように見えますが、出力データが上記の形式と一致するかどうかはわかりますか? – Max

関連する問題