2016-09-08 2 views
0

この問題は本当に私を狂ってしまう。 私はそこに1 000 000行のasciiファイルを持っています。 X座標、Z-深さ-V速度の3つの列があります。 例えば: - 例えばPython、interpolation、

 45000  -11657.8  5985.61 
     45000  -11600   ?????? 
     45000  -11578.22  5974.688 
     45000  -11500   ????? 
     45000  -111034.451  2062.341 
     287800  -934.9814  2006.724 
     287800  -900   ???? 
     287800  -895.1937  1984.451 

ものを(それぞれ2000メートルまたは100メートルなどの場合)、ステップ による速度(V)と[15 000 0へ]

  X   Z    V 
     45000  -11657.8  5985.61 
     45000  -11578.22  5974.688 
     45000  -11259.92  5930.935 
    287800  -1034.451  2062.341 
    287800  -1014.557  2051.226 
    287800  -934.9814  2006.724 

Iは、深さ(Z)を補間する必要私がやった:

import numpy as np 
from scipy.interpolate import interp1d 

with open('my data' ,'r') as f: 

header1 = f.readline() ###skip the first head line 
X_list=[] #### Create 3 empty lists 
Z_list=[] 
V_list=[] 
for line in f: 
    line = line.strip() 
    columns = line.split() 
    X = (float(columns[0])) ### separete columns and add to list and convert 
    Z = (float(columns[1])) ###to float 
    V = (float(columns[2])) 
    X_list.append(X) 
    Z_list.append(Z) 
    V_list.append(V) 
x = np.linspace(min(Z_list),max(Z_list),6) ## step 3000m = 6 parts 
print (x) 

結果:

[-15000。 -12000。 -9000。 -6000。 -3000。 0]

は今、私が得た:

X    Z   V 

45000  -15000 ?????? 
45000  -12000 ?????? 
45000  -9000  ?????? 
45000  -6000  ?????? 
45000  -3000  ?????? 

そこで質問です。私はどのように各座標の興味深い深さにこの速度を補間できますか? アドバイスありがとうございます

+0

あなたは実際に 'interp1d'と実際に間違っているものは正確に適用していますか? – Praveen

+0

私は 'x'を設定しませんでした 私はnp.interp(X_list、x、V_list)を書きました –

答えて

1

補間するには、補間の基となる入力と出力の例が必要です。あなたの場合、Z_listは入力で、出力はV_listです。

次は、入力と出力のZ_listV_list続く、配列はxを補間することを期待され、numpyからinterp機能を使用することができます。 its documentationの例に従ってみましょう。

import numpy as np 
print np.interp(x, Z_list, V_list) 
+0

その本当のwokrs!ありがとうございました!私は前にそれを試しましたが、代わりに "x"を付けました。最初のパラメーターが座標である必要があると思ったので –