Эта проблема действительно сводит меня с ума. У меня есть файл ascii с ~ 1 000 000 строк в нем. Есть 3 колонки X - координата, Z - глубина - V-скорость. Например:Python, интерполяция,
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
мне нужно интерполировать глубины (Z) [- 15 000 до 0] со скоростью (V) с помощью шагов (для каждого 2000м или 100 м и т.д.) Например
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
Что Я сделал:
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 ??????
Таким образом, вопрос. Как я мог интерполировать эту скорость на интересные глубины для каждой координат? Благодарим за любые советы
Где вы на самом деле применяете 'interp1d' и что не так, точно? – Praveen
Я не установил 'x' Я написал np.interp (X_list, x, V_list) –