Python x 和 y 的 z 插值和提取值?

Python interpolation and extracting value of z for x and y?

你能帮忙吗 我有这个数据,其中 z 是特定 x 和 y

的函数
xs = [0.15, 0.35, 0.5, 0.67, 0.8]
ys = [0.01,0.01, 0.01, 0.01, 0.01]
z = [0.75, 0.83, 1.00, 0.92, 0.91]

我把值排列成这个形状 我怎样才能对这些点进行插值,以便以后可以调用与我拥有的不同的 z 值?

一个简单的搜索就会有所帮助。 你的问题基本上是 scipy.interpolate.interp2d documentation.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy import interpolate
import numpy as np

xs = [ 0.15, 0.35, 0.5, 0.67, 0.8 ]
ys = [ 0.01, 0.05, 0.1, 0.2, 0.3 ]
zz = np.array( [
    0.75, 0.83, 1.00, 0.92, 0.91,
    0.75, 0.82, 0.87, 0.88, 0.88,
    0.74, 0.81, 0.84, 0.83, 0.83,
    0.72, 0.76, 0.77, 0.76, 0.76,
    0.72, 0.72, 0.72, 0.72, 0.72 
    ] ).reshape( ( 5, 5 ) )

xx, yy = np.meshgrid( xs, ys )
f = interpolate.interp2d( xx, yy, zz, kind='cubic' )

fig = plt.figure()
ax = fig.add_subplot( 1, 1, 1, projection='3d' )
ax.plot_surface( xx, yy, zz)

x2 = np.linspace( .15,.8,50 )
y2 = np.linspace( .01,.3,50 )

xx2, yy2 = np.meshgrid( x2, y2 )
zz2 = f( x2, y2 )

fig2 = plt.figure()
bx = fig2.add_subplot( 1, 1, 1, projection='3d' )
bx.plot_surface( xx2, yy2, zz2 )

plt.show()

提供原始数据

和 50 x 50 网格上的三次插值

tck = interpolate.bisplrep(x, y, z, s=0)
def givemeZ(x,y):
    return interpolate.bisplev(x,y,tck)

现在通过 运行 代码,它将为特定的 x 和 y 给出 z。 这可以在没有情节的情况下使用。把它放在值下面,并确保值以相同的方式排列