numpyで3D配列を正確にスライスしてソートする方法について少し混乱しています。これを手動で行うには多くの方法があるようですが、私は を使用してこれを行う必要がありますnumpy.where()。たとえば、lo3602D 経度値の場合lat2d、2D の緯度値yiは経度値xiの 1D 配列であり、緯度値の 1D 配列です。
xiおよびyiは動的に変化して小さな地理的地域を表し、lo360およびlat2dはタイプ (-90,90) および (0,360) の惑星の静的な緯度と経度です。xiと同様の形式ですlo360がyi、昇順ではなく降順です。したがって、表す 3D 配列がA(levels,lat,lon)あり、領域を抽出したい場合:
slice2d = np.where( (lo360 <= xi.max()) &
(lo360 >= xi.min()) &
(lat2d <= yi.max()) &
(lat2d >= yi.min()) )
lon_old = lo360[slice2d]; print lon_old.shape
(441,)
2D スライスが必要な場合、これは 1D 配列を返します。ただし、データは正しいので、これは私の問題ではありません。
次に、3D 配列をスライスしようとすると、A[i][slice2d]動的に検証するのが容易ではない 1D 配列が得られます。griddata以前は 3D 配列xiとyi解像度を使用していましたが、yi緯度を昇順に変更しました: yi = yi[::-1]:
for i in np.arange(4):
nvals[i] = matplotlib.mlab.griddata(lat_old,lon_old,
mvals[i][slice2d],
yi,xi)
ここで問題が始まると思います。結果に降順の緯度が必要なので、これをnvals:に行いnvals = nvals[:,::-1,:]ます。しかし、データはすべてめちゃくちゃです。インデックス作成に何らかのエラーがあると思われますが、python がエラーを返さなかったので、インデックス作成で何かを考えていますが、別のことを考えています。
おそらく、あなたの専門家の 1 人が、厄介な問題を発見したり、より良い方法を提案したりできるでしょう。ファイルの添付方法がわかったら画像を添付します。