(1)V対cp曲線(CSVファイル)と(2)NetCDFファイルからの速度を取得するための単純な補間はできませんか?単純な補間は、Pythonでは非常に高速です(そして私もRで推測されます)。
CSVファイルのV対cp曲線が非常に詳細な場合は、最も近い近傍補間のような簡単な方法で逃げることができます。そうでない場合は、より良い選択肢があります。たとえば:
import numpy as np
import matplotlib.pylab as pl
from scipy import interpolate
# Given combinations of velocity and cp (from CSV file):
V_csv = np.linspace(0,10,4)
cp_csv = V_csv**2.
# Random velocities in the range {0..10} (from NetCDF file):
V = np.random.random(5)*10
# Create linear, nearest neighbour and quadratic interpolation functions
f_near = interpolate.interp1d(V_csv, cp_csv, kind='nearest')
f_lin = interpolate.interp1d(V_csv, cp_csv, kind='linear')
f_quad = interpolate.interp1d(V_csv, cp_csv, kind='quadratic')
# Interpolate:
cp_near = f_near(V)
cp_lin = f_lin(V)
cp_quad = f_quad(V)
# Visulalization
pl.figure()
pl.plot(np.linspace(0,10,256), np.linspace(0,10,256)**2., label='Real V vs cp curve')
pl.plot(V_csv, cp_csv, '-x', label='Given (discrete) V vs. cp curve')
pl.scatter(V, cp_near, label='nearest')
pl.scatter(V, cp_lin, label='linear')
pl.scatter(V, cp_quad, label='quadratic')
pl.legend(frameon=False, loc='best')
pl.xlabel('V')
pl.ylabel('cp')
私はhttps://stackoverflow.com/questions/22933855/convert-csv-to-netcdf(この記事は[変換-CSV-に-NetCDFファイル]参考になると思います) –
あなたのコメントをありがとう。私はそれを見ましたが、私のcsvファイルに緯度経度値はありませんので、その方法はうまくいくとは思いませんでしたか?問題は、NetCDFファイルに既に存在する風速に基づいてグリッドポイントにcp値を割り当てる必要があることです。 –
'cp'をどのようにして速度にマッピングしたいですか?風速にある特定の「cp」値に対応する範囲があるかどうか。 '0 <= u <1'は' cp = 10'を与え、 '1 <= u <2'は' cp = 20'を返します。 – Bart