0

numpy 配列から作成中の NetCDF ファイルに値を移動しようとしています。現在、netCDF ファイルを作成するときに numpy 配列の「ファンシー インデックス」をエミュレートする最良の方法を見つけようとしていますが、データセットに 2 つのポイントしかない場合、2 つのインデックス システムは一致しません。

import netCDF4
import numpy as np

rootgrp = netCDF4.Dataset('Test.nc','w',format='NETCDF4')
time = rootgrp.createDimension('time',None)
dim1 = rootgrp.createDimension('dim1',100)
dim2 = rootgrp.createDimension('dim2',100)
dim3 = rootgrp.createDimension('dim3',100)
ncVar = rootgrp.createVariable('ncVar','f4',('time','dim1','dim2','dim3'))
npArr = np.arange(0,10000)
npArr = np.reshape(npArr,(100,100))

したがって、これはうまく機能します:

x,y=np.array(([1,75,10,99],[40,88,19,2]))
ncVar[0,x,y,0] = npArr[x,y]

これはしませんが:

x,y=np.array(([1,75],[40,88]))
ncVar[0,x,y,0] = npArr[x,y]

これらの割り当ては、〜 1000 タイム ステップでx,y値を作成することを決定する動的ループの一部です。ncVar

編集: 問題は、最初のケースが一連のポイントを定義するものとして x,y を認識し、[4,] サイズの配列を返す (netCDF4 の「ファンシー インデックス」に関するドキュメントにもかかわらず) ことのようですが、2 番目のケースではそれらを組み合わせて解釈します。 [2,2]サイズの配列を返します(ドキュメントに記載されています)。誰かがこれに遭遇したか、回避策を見つけましたか?

4

0 に答える 0