1

scipy を使用して正しく解決できなかった問題があります。解像度を下げる(高い方から低い方へ)ようにリサンプリングして配列したいと思いますが、ここで問題が発生します。新しい配列形状は古いものの要因ではありません。例えば:

 lat = scipy.mgrid[-14.0:14+0.25:0.25]
 lon = scipy.mgrid[100.0:300+0.25:0.25]
 z = rand((lat.shape[0],lon.shape[0]))
 new_res = 0.70135

今、空間解像度が 0.25 の配列 z があり、これを new_res に減らしたいと考えています。scipy を使用して、または手動でこれを行う方法はありますか? さらに厄介なことに、配列 z に不良データが存在することがよくあります。つまり、z[0.20] が nan である可能性があります。

あなたの助けと考えに感謝します

4

1 に答える 1

2

これを行う簡単な方法は、 を使用することscipy.ndimage.interpolation.map_coordinatesです。

lat = scipy.mgrid[-14.0:14+0.25:0.25]
lon = scipy.mgrid[100.0:300+0.25:0.25]
z = tile(lon,(len(lat),1))
new_res = 0.70135


new_lat = scipy.mgrid[-14.0:14+0.25:new_res]
new_lon = scipy.mgrid[100.0:300+0.25:new_res]
X,Y = meshgrid(((new_lat-np.min(lat))/(np.max(lat)-np.min(lat)))*lat.shape[0],((new_lon-np.min(lon))/(np.max(lon)-np.min(lon)))*lon.shape[0])
pts = np.asarray(zip(X.ravel(),Y.ravel())).T
new_z = scipy.ndimage.interpolation.map_coordinates(z,pts).reshape(len(new_lon),len(new_lat)).T

呼び出しでのすべての混乱は、meshgrid実際の単位を変換することです->配列単位。これNaNNaN.

このチュートリアルも役に立つかもしれません。

于 2012-10-05T14:46:29.143 に答える