私はいくつかのnetCDFファイルを持っています。各方向(、、x
)に24個y
、z
異なる時間の値を持つ24個です。最後の時点で、すべてのタイムステップのデータをプロットする必要があります。
プロットでは、特定のポイントで補間する必要があるため、最近傍を知る必要があります。私の計画は、データを3Dセルに分割することです。これにより、データセット全体で最近傍を検索する必要がなくなります。
[x,y,z,v[:]]
したがって、最初のステップでは、データファイルを読み込んで、各ポイントの座標と各時間の値を含む配列を作成します。
その後、各ポイントについて、それが属するセルを計算し、それを4次元の配列に追加します:x
、、、および:y
z
v
for vec in vecs:
x_ind = int((vec[0]-xmin) / stepWidthX)
y_ind = int((vec[1]-ymin) / stepWidthY)
z_ind = int((vec[2]-zmin) / stepWidthZ)
if x_ind==gridPointsInXdirection:
x_ind = x_ind-1
if y_ind==gridPointsInYdirection:
y_ind = y_ind-1
if z_ind==gridPointsInZdirection:
z_ind = z_ind-1
#print z_ind, y_ind,x_ind
XGridPoints[z_ind, y_ind, x_ind] = np.append(XGridPoints[z_ind, y_ind, x_ind], vec[0])
YGridPoints[z_ind, y_ind, x_ind] = np.append(YGridPoints[z_ind, y_ind, x_ind], vec[1])
ZGridPoints[z_ind, y_ind, x_ind] = np.append(ZGridPoints[z_ind, y_ind, x_ind], vec[2])
VGridPoints[z_ind, y_ind, x_ind] = np.append(VGridPoints[z_ind, y_ind, x_ind], vec[3])
vecs
すべてのデータポイントを含む配列はどこにありますか。これまでのところ機能していますが、私の問題はVGridPoints
次のとおりです。配列のリストではなく、値のリストが長いです。後で次のようにアクセスできるように、配列要素に配列を追加するソリューションはありますか?
x = XGridPoints[2,3,4][2]
y = YGridPoints[2,3,4][2]
z = ZGridPoints[2,3,4][2]
v[:] = VGridPoints[2,3,4][2]
タイムステップを1つだけ実行すると機能しますが、タイムステップごとにセルと最も近い隣接セルを再計算すると、大きなオーバードライブが発生し、時間の経過とともに場所が変更されません。