У меня есть текстовый файл (data.txt) в следующем формате (xyz):
Пример:
1.1 0.0 12
1.2 2.2 15
1.3 5.5 30
2.6 1.0 20
2.1 4.8 31
3.9 0.5 12
...
Я получаю эти данные со следующим кодом:
x,y,z = np.genfromtxt(r'data.txt', unpack=True)
Я хочу сделать интерполяцию, чтобы найти значение z определенного набора точек. Пример:
(1,0; 1,0), (1,9; 3,05), (1,4; 4,0), (2,2; 0,9), (2,4; 2,1), (2,9; 3,0), (3,0; 1,8)
Я создаю текстовый файл ("points.txt") с этими точками и загружаю их с
positions_path = np.loadtxt("points.txt") #(x, y)
Это мой код для вычисления интерполяции:
intial_points = np.transpose(np.vstack((x, y))) #array with the x and y points from data.txt
L1 = [] #empty list
for i in range(len(positions_path)):
n1=float(interpolate.griddata(intial_points, z, (positions_path[i,0], positions_path[i,1] ), method='linear'))
#L1 saves x, y, z
L1.append([positions_path[i,0], positions_path[i,1], n1])
Это делает работу. Проблема в том, что это неосуществимо для большего количества баллов. Я в основном делаю интерполяцию для каждой точки. Если у меня будет 10000 очков, мне придется сделать это 10000 раз.
Я знаю, что могу создать определенную сетку и получить значения для дискретной сетки. Но что, если я получу значение для такой точки, как (0,001, 0,25)? Я должен был бы иметь очень тонкую сетку. Это причина, почему я избегаю сеток.
Есть ли способ выполнить интерполяцию для 1000 точек одновременно?
Спасибо!