Python3:某些点的插值(非网格)

Python3:某些点的插值(非网格),python,python-3.x,numpy,linear-interpolation,Python,Python 3.x,Numpy,Linear Interpolation,我有一个文本文件(data.txt),格式如下(x y z): 例如: 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.

我有一个文本文件(data.txt),格式如下(x y z):

例如:

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个点


谢谢

解决方案非常简单:


n1=interpolate.griddata(intial_points, z, (positions_path[:,0], positions_path[:,0] ), method='linear')
它返回一个数组,其中包含points.txt中点的“z”值。不需要网格。
谢谢

解决方案非常简单:


n1=interpolate.griddata(intial_points, z, (positions_path[:,0], positions_path[:,0] ), method='linear')
它返回一个数组,其中包含points.txt中点的“z”值。不需要网格。 谢谢